网站的内部优化公司,wordpress 社交链接,在线ps网站,做商城网站需要多大的服务器实体和数据库之间存在某种映射关系#xff0c;hibernate根据这种映射关系完成数据的存取。在程序中这种映射关系由映射文件#xff08;*.hbm.xml#xff09;或者java注解()定义。
本文以java注解的形式总结映射关系配置。
实体类组件以及注解标签映射关系
实体类--------…实体和数据库之间存在某种映射关系hibernate根据这种映射关系完成数据的存取。在程序中这种映射关系由映射文件*.hbm.xml或者java注解()定义。
本文以java注解的形式总结映射关系配置。
实体类组件以及注解标签映射关系
实体类-----------Entity/Table----------数据表
Id--------------Id----------主键
普通属性---------Column----------普通键
集合属性---------OneToMany/ManyToOne/ManyToMany/OneToOne/OneToMany----------外键
将映射文件配置到hibernate配置文件
Hibernate将通过配置文件(cfg.xml)定义实体和数据库关系映射
mapping classcom.test.Cat/
主键映射
.Hibernate推荐实体类有主键列并且有setter 和 getter且主键数据类型使用引用类型。因为基础数据类型不能为null值hibernate中主键的null表明实体类是处在瞬时(Transient)状态非null表示处持久化()状态。
.用Id声明为主键列用Column声明列名。
.列名属性名相同时候Column可以省略。
.GeneratedValue指定主键的生成策略
Example: Id Column(name id) GeneratedValue(strategy GenerationType.AUTO) private Integer id;
主键生成规则
目前注解支持4种生成策略
GenerationType.AUTO:根据数据库自己决定
GenerationType.TABLE使用指定表决定主键的取值
GenerationType.SEQUENCE使用sequence决定主键取值适合支持sequence的数据库。
GenerationType.IDENTITYidentity类型的主键
普通属性配置
.java注解使用Column和Basic配置普通属性。两者都可以省略
.Column属性声明字段约束 Nullable非空约束
Unique 唯一约束 Insertable 插入约束(是否允许插入) Updateable 更新约束是否允许更新 Length 列长度 ColumnDefinition 列类型
Scale 整数长度 Precision 小数点精度
Basic属性声明加载方式 Fetch 是否延迟加载 Optional 该列是否可以为null
Example: Column(name salary, scale 8, precision 2) Basic(fetch FetchType.LAZY, optionaltrue) private double salary;
日期属性配置
日期属性也是普通属性
除了column和Basic之外还可得使用Temporal配置日期类型
java.sql.Date/java.sql.Time/java.sql.Timestamp都是java.util.Date的子类。实体类中声明成java.util.Date就行了。Hibernate根据日期配置的具体类型操作数据库。
Example: Temporal(TemporalType.TIMESTAMP) // 日期类型DATE, TIME还是TIMESTEMP Column(name createDate) private Date createDate;
临时属性映射
临时属性是实体类中方便运算的成员不参与数据库的映射。防止hibernate把它和数据库进行映射导致产生异常使用Transient标记。
可以配置在属性上也可以配置在对应的getter/setter方法上。
Example Transient Public setterTemp (String temp){
this.temp temp; }
版本属性映射
为了保证数据的准确性程序必须保证只用一个线程同时访问数据。乐观锁和悲观锁是两种实现的方式。Version是乐观锁的实现。版本列一般为数字列。
Example Version Private int id;
实体关系映射配置
见《Hibernate实体映射配置2java注解方式》