您的位置:首页 > 其它

借助ejb3通过注解方式配置hibernate

2016-11-17 15:08 369 查看
注解方式配置hibernate
注解的方式与xml很很多类似:

首先是需要加入4个jar包:hibernate-commons-annotations.jar 、 hibernate-annotations.jar

ejb3-persistence.jar 、 hibernate-jpa-2.0-api-1.0.1.Final.jar

下面是不同的地方:

(1):hibernate.hbm.xml 文件中把引用:xxx.hbm.xml改为引用实体类:

     即把:<mapping resource="com/wsw/hibernate/model/Person.hbm.xml"/>

改为:<mapping class="com.wsw.hibernate.model.Teacher" />

(2):获取SessionFactory方式发生了变化:

      即:由SessionFactory sf = new Configuration().configure().buildSessionFactory()

    改为:SessionFactory sf = new AnnotationConfiguration().configure().buildSessionFactory()

(3):注解方式不需要在xxx.hbm.xml把实体类与表进行映射。而采用在实体类中进行注解。

注意:(1):如果实体类属性名与表字段名不一致的时候,要么都注解在属性前,要么都注解在get方法前。不能部分注解在属性前,部分注解在方法前。

 (2):如果实体类属性名与表字段名一致的时候,可以部分注解在属性前,部分注解在方法前。

 (3):如果在实体类中某些属性不注解:(属性和get都不写注解),默认为表字段名与实体类属性名一致。

 (4):如果实体类的某个成员属性不需要存入数据库中,使用@Transient 进行注解就可以了。即类似于:(xxx.hbm.Xml配置中的某些字段不写(就是不需要对这个成员属性进行映射))

 (5):表名称可以在实体类前进行注解。

 (6):所有这些注解在:javax.persistence包下。而不是在hibernate包中。

 ---------------------------------------------------------------------------------------------------------------------

@Entity                        // 表示为实体类

@Table(name="t_teacher")       // 表名注解

public class Teacher implements Serializable {

    private int id;

    private String username;

    private int age;

    @Id              // 表示主键

    @GenericGenerator(name = "generator", strategy = "increment")   @GeneratedValue(generator = "generator")   // 自增长

    @Column(name = "id")                                 // 类属性对应着表字段

    public int getId() {

       return id;

    }

    public void setId(int id) {

       this.id = id;

    }

    @Column(name="t_username")                       // 类属性对应着表字段

    public String getUsername() {

       return username;

    }

    public void setUsername(String username) {

       this.username = username;

    }

    @Column(name="t_age")                      // 在实体类属性进行注解,类属性对应着表字段

    public int getAge() {

       return age;

    }

    public void setAge(int age) {

       this.age = age;

    }
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  hibernate