annotation(注释)版本的hibernate,相比xxxx.hbm.xml那种方法,这种显然简单得多了,用得也多。
1.首先看看hibernate.cfg.xml的不同之处,
<session-factory>
<mapping resource="com/bjsxt/hibernate/Student.hbm.xml"/>
<!--昨天学的.xml配置hibernate方法,得在这里声明映射的XML资源-->
<mapping class="com.bjsxt.hibernate.Teacher"/>
<!--而今天学的这种annotation方法,则得加的是映射类-->
</session-factory>
2.Teacher类
package com.bjsxt.hibernate;
import javax.persistence.Entity;
import javax.persistence.Id;
@Entity
//注释一下。注意这里的entiy是javax.persistence的entiy,导入相关的包注意不要导入错了。
//可以在entity下加这句来确定表名@Table(name="teacher")
public class Teacher {
private int id;
private String name;
private String title;
@Id // 主键就是注释为@Id
public int getId() {
return id;
}
//这些一般的property可以不用@注释出来,除非那些多对一、一对多的关系,那些后面学,如果方法名和属性名不同,则要用@column(name='xxx数据库里面的名称'),一般不建议这样。
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
}
3.依旧写个测试类
Teacher t = new Teacher();
t.setId(1);
t.setName("t1");
t.setTitle("middle");
SessionFactory sessionFactory = new AnnotationConfiguration().configure().buildSessionFactory();
Session session = sessionFactory.getCurrentSession();
session.beginTransaction();
session.save(t);
session.getTransaction().commit();
4.木有啦,测试!Ok
*。常用的hibernate annotation标签如下,- -用到可以查:
@Entity --注释声明该类为持久类。将一个Javabean类声明为一个实体的数据库表映射类,最好实现序列化.此时,默认情况下,所有的类属性都为映射到数据表的持久性字段.若在类中,添加另外属性,而非映射来数据库的,要用下面的Transient来注解.
@Table(name="promotion_info") --持久性映射的表(表名="promotion_info).@Table是类一级的注解,定义在@Entity下,为实体bean映射表,目录和schema的名字,默认为实体bean的类名,不带包名.
@Id--注释可以表明哪种属性是该类中的独特标识符(即相当于数据表的主键)。
@GeneratedValue --定义自动增长的主键的生成策略.
@Transient --将忽略这些字段和属性,不用持久化到数据库.适用于,在当前的持久类中,某些属性不是用于映射到数据表,而是用于其它的业务逻辑需要,这时,须将这些属性进行transient的注解.否则系统会因映射不到数据表相应字段而出错.
@Temporal(TemporalType.TIMESTAMP)--声明时间格式
@Enumerated --声明枚举
@Version --声明添加对乐观锁定的支持
@OneToOne --可以建立实体bean之间的一对一的关联
@OneToMany --可以建立实体bean之间的一对多的关联
@ManyToOne --可以建立实体bean之间的多对一的关联
@ManyToMany --可以建立实体bean之间的多对多的关联
@Formula --一个SQL表达式,这种属性是只读的,不在数据库生成属性(可以使用sum、average、max等)
@OrderBy --Many端某个字段排序(List)
*。Hibernate和SQL中经常见到column是字段名,例如你往学生数据库中插入学生信息表,组成学生信息表中的的学号啊姓名啊性别啊那些就是column字段。
*。在hibernate.cfg.xml中,还有个要注意的就是hbm2ddl,DDL(Data Definition Language,数据库模式定义语言),就是hibernate自动转换为DDL语言的类型。选择create,那么每次都要drop掉然后再create新的数据,选择update则会每次都更新数据而不是删掉直接再来。一般是update。
<!-- Drop and re-create the database schema on startup -->
<property name="hbm2ddl.auto">update</property>
这是上上周学的,自己小小整理了一下,忘记放出来了。。。
项目文件也给上,mysql的数据库名是hibernate,表名运行后自动生成。。。
项目采用的是JUNTI的测试方法。
分享到:
相关推荐
spring ,hibernate ,flex 应用注释配置的一个例子,里面有数据库脚本和说明文件
在最近发布的几个Hibernate版本中,出现了一种基于 Java 5 注释的更为巧妙的新方法。借助新的 Hibernate Annotation 库,即可一次性地分配所有旧映射文件——一切都会按照您的想法来定义——注释直接嵌入到您的Java...
刚学hibernate的注释和级联,第一个程序分享给大家
Hibernate注释大全收藏 声明实体Bean @Entity public class Flight implements Serializable { Long id; @Id public Long getId() { return id; } public void setId(Long id) { this.id = id; } } @Entity ...
本文是讲解的是hibernate3.2的主键生成方式,通过annotation来实现,详细的分析了主键在hibernate的生成以及在真实项目的运用。。。。
使用Maven3.0.5, Struts2, Spring, Hibernate3, annotation实现零配置的开发框架.里面有详细的开发指导文档, 后台用googlecode的 hibernate-generic-dao - Generic DAO 和 Search的代码,完全进行封装. 由于Generic ...
完全使用Annotation,及XML,各立独立与配合混合使用,有加注释,我也是初学者,适合新手,老鸟免了
Hibernate4_Inheritance_Annotation 该程序演示了如何使用 Annotations 在 Hibernate 中使用继承。 Hibernate 支持 3 种类型的继承 每个具体类一个表 - 每个子类都有一个表,该表也具有超类的所有属性。 (TABLE_PER...
扩展了hibernate的查询,主要是使用了通过注释方式把一个实体的变量注释成一个查询的条件.
通过自定义注解,反射等技术实现hibernate注解功能。单元测试可以直接跑,代码里的注释写的很清楚,欢迎下载参阅!
-- 使用 annotation 自动注册bean,并检查@Controller, @Service, @Repository注解已被注入,也可以分开注释,或者固定某个目录下 --> *" /> <!-- <aop:config>--> <!-- execution第一个星号代表任何返回类型,第...
spring+hibernate的完整程序;
@GenerateDao // Annotation to generate DAO class @Entity public class Delivery { @Id @GeneratedValue ( strategy = GenerationType . IDENTITY ) private Integer id; private String orderId; private ...
它带有一些数据库优化,如准备好的语句、缓存、Hibernate Criteria,如查询 (todo) 和版本控制。用法首先用@Model注释你的类,而不是用@Property定义属性。 例子 : @Modelpublic class Castle { @Id long id; @...
添加到applicationContext.xml transactionManager参考并注释旧的transactionManager设置。 在tx:annotation-driven的applicationContext.xml中指示事务管理器。 另外包含:Log4J(根据: ://spring.io/blog/...
注释处理器会自动生成带有注释的所有类的列表。 关于 通过自动生成带有@Entity批注的类列表,简化了Dropwizard中实体类的注册。 例子 这是两个需要注册的实体类。 package com.example.hibernateutils import ...
项目结合了springmvc-hibernate-用于小型项目的oracle,整个spring配置是由ANNOTATION完成的,因此比使用xml更加方便和易于管理 该项目还具有许多与数据库连接(使用连接池)相关的自定义配置,以及自定义spring安全...
自己写的,eclipse插件,可以给指定目录下的pojo或者单个的pojo生成java annotation的xdoclet注释,然后maven可以调用并生成hbm文件
戴纳波德 ...ID 成员应使用org.springframework.data.annotation.Id (使用 Spring Data 时)或javax.persistence.Id (使用 Hibernate 时)进行注释。 即使基于 XML 的配置已经提到,这也是强制性的。