粗解hibernate

来源:互联网 发布:淘宝发货地不一样 编辑:程序博客网 时间:2024/06/05 15:01


各个类的基本关系如上图。

配置如下:

@Entity
@Table(name = "user")
@Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE)
public class User{
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)    private Integer id;
    
    @Column(name = "username")    private String username;
   
    @Column(name = "password")    private String password;
    @OneToMany(mappedBy = “userRole”,fetch = FetchType.LAZY)
    private Collection<UserRole> userRoles;    
//构造空的构造器
public User(){}

//此处省略所有的getter和setter方法
}

注解解释:

@Entity标注该类是一个实体类(类分为实体类,边界类和控制类详见http://baike.baidu.com/view/1545941.htm)

@Table(name = “user”)该类对应数据库中的表。

@Cache(strategy = GenerationType.IDENTITY)定义缓存策略,缓存的方式有四种,分别为: 
  CacheConcurrencyStrategy.NONE 
  CacheConcurrencyStrategy.READ_ONLY,只读模式,在此模式下,如果对数据进行更新操作,会有异常; 
  CacheConcurrencyStrategy.READ_WRITE,读写模式在更新缓存的时候会把缓存里面的数据换成一个锁,其它事务如果去取相应的缓存数据,发现被锁了,直接就去数据库查询; 
  CacheConcurrencyStrategy.NONSTRICT_READ_WRITE,不严格的读写模式则不会的缓存数据加锁; 
  CacheConcurrencyStrategy.TRANSACTIONAL,事务模式指缓存支持事务,当事务回滚时,缓存也能回滚,只支持JTA环境。

    @Id标注该字段是id

    @GeneratedValue(strategy = GenerationType.IDENTITY)注解id的生成策略,有四种生成策略——TABLE使用特定的数据库表格保存主键。

SEQUENCE根据底层数据库的序列生成主键,前提是数据库支持序列化。IDENTITY自动生成。AUTO程序控制生成。

    @OneToMany(mappedBy = "userRole")mappedBy指向维护端的表,也就是说userRole做级联操作。同时就不再创建第三张表。

    UserRole端的代码是:@ManyToOne @JoinColumn(name = “user_id”)


原创粉丝点击