hibernate属性级别注解实例代码
属性级别注解
添加方式:
写在属性字段上面
写在属性的get访问器的上面
@id
必须,定义了映射到数据库表的主键的属性,一个实体类可以有一个或者多个属性被映射为主键,可置于主键属性或者getxxx()前,注意:如果有多个属性定义为主键属性,该实体类必须实现serializable接口
@sequencegenerator
@generatedvalue
@generatedvalue(strategy=generationtype,generator=""):可选,用于定义主键生成策略
strategy表示主键生成策略,取值有:
generationtype.auto:根据底层数据库自动选择(默认)
generationtype.indentity:根据数据库的identity字段生成
generationtype.sequence:使用sequence来决定主键的取值
generationtype.table:使用指定表来决定主键取值,结合@tablegenerator使用
@column
@column-可将属性映射到列,使用该注解来覆盖默认值,@column描述了数据库表中该字段的详细定义,这对于根据jpa
注解生成数据库表结构的工具非常有作用。
常用属性:
name:可选,表示数据库表中该字段的名称,默认情形属性名称一致
nullable:可选,表示该字段是否允许为null,默认为true
unique:可选,表示该字段是否为唯一标识,默认为false
length:可选,表示该字段的大小,仅对string类型的字段有效,默认值225,主键不能使用默认值
insertable:可选,表示在orm框架执行插入操作时,该字段是否应出现insertrt语句中,默认为true
updateable:可选,表示在orm框架执行更新操作时,该字段是否应该出现在update语句中,默认为true。对于已经创建
就不可以更改的字段,该属性非常有用
@embedded
@embedded是注释属性的,表示该属性的类是嵌入类。
注意:同时嵌入类也必须标注@embeddable注解
@embeddedid
@embeddedid使用嵌入式主键类实现复合主键
注意:嵌入式主键类必须实现serializable接口、必须有默认的public无参数的构造方法、必须覆盖equals和hashcode方法
@lob
@version
@basic
@transient
可选,表示该属性并非一个到数据库表的字段的映射,orm框架将忽略该属性,如果一个属性并非数据库表的字段映射,就
务必将其标示为@transient,否则orm框架默认其注解为@basic
实例:
hibernate.properties配置:
<!doctype hibernate-configuration public "-//hibernate/hibernate configuration dtd 3.0//en" "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd"> <hibernate-configuration> <session-factory> <property name="hibernate.dialect">org.hibernate.dialect.mysqldialect</property> <!-- <property name="hibernate.connection.driver_class">com.mysql.jdbc.driver</property> <property name="hibernate.connection.url">jdbc:mysql:///hibernate_struts_stumanager</property> --> <property name="hibernate.connection.driver_class">com.mysql.jdbc.driver</property> <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/mypage</property> <property name="hibernate.connection.username">root</property> <property name="hibernate.connection.password">root</property> <property name="hibernate.show_sql">false</property> <property name="hibernate.hbm2ddl.auto">create</property> <!-- <property name="hibernate_current_session_context_class">thread</property> --> <property name="current_session_context_class">thread</property> <mapping class="com.entity.students"/> </session-factory> </hibernate-configuration>
实体类student:
package com.entity; import java.io.serializable; import java.util.date; import javax.persistence.column; import javax.persistence.embedded; import javax.persistence.embeddedid; import javax.persistence.entity;//jpa注解 import javax.persistence.generatedvalue; import javax.persistence.generationtype; import javax.persistence.id; import javax.persistence.table; import javax.persistence.transient; import org.hibernate.annotations.genericgenerator; /* * 学生实体类 */ //@entity// //@entity(name="t_students")//如果不添加名字,则默认与实体类名字相同,如果想要自行设置表明,就需要自己进行添加 @entity @table(name="t_students1",schema="mypage") public class students implements serializable{ @id // @generatedvalue // @generatedvalue(strategy=generationtype.auto)//与@generatedvalue结果相同,字符串类型不能指定为auto类型 // private int sid; //学号 // @generatedvalue(generator="sid") // @genericgenerator(name="sid",strategy="assigned") // @column(length=11) // private string sid; @embeddedid private studentpk pk; // @id // // @column(length=11) private string sname;//姓名 private string gender;//性别 private date birthday;//出生日期 private string major;//专业 private address add; @transient //表示该字段不会被orm映射到表里的字段 private double salary;//薪水 public students(){ } public students(studentpk pk, string sname, string gender, date date, string major,address add,double salary) { // super(); this.pk = pk; this.sname = sname; this.gender = gender; this.birthday = date; this.major = major; this.add = add; this.salary = salary; } public studentpk getpk() { return pk; } public void setpk(studentpk pk) { this.pk = pk; } public string getsname() { return sname; } public void setsname(string sname) { this.sname = sname; } public string getgender() { return gender; } public void setgender(string gender) { this.gender = gender; } public date getbirthday() { return birthday; } public void setbirthday(date birthday) { this.birthday = birthday; } public string getmajor() { return major; } public void setmajor(string major) { this.major = major; } public address getadd() { return add; } public void setadd(address add) { this.add = add; } public double getsalary() { return salary; } public void setsalary(double salary) { this.salary = salary; } }
studentpk实体类:
package com.entity; import java.io.serializable; import javax.persistence.column; import javax.persistence.embeddable; @embeddable public class studentpk implements serializable{ /** * */ private static final long serialversionuid = 1l; @column(length=18) private string id;//身份证号 @column(length=8) private string sid;//学号 public studentpk(){ } public studentpk(string id, string sid) { this.id = id; this.sid = sid; } public string getid() { return id; } public void setid(string id) { this.id = id; } public string getsid() { return sid; } public void setsid(string sid) { this.sid = sid; } @override public boolean equals(object obj) { // todo auto-generated method stub return super.equals(obj); } @override public int hashcode() { // todo auto-generated method stub return super.hashcode(); } }
地址类:
package com.entity; import javax.persistence.embeddable; import javax.persistence.embedded; // 地址类 @embeddable //表示是一个嵌入类,这个类的对象在另一个实体类中充当属性 public class address { private string postcode;//邮编 private string address;//地址 private string phone;//联系电话 public address(){ } public address(string postcode, string address, string phone) { this.postcode = postcode; this.address = address; this.phone = phone; } public string getpostcode() { return postcode; } public void setpostcode(string postcode) { this.postcode = postcode; } @embedded public string getaddress() { return address; } public void setaddress(string address) { this.address = address; } public string getphone() { return phone; } public void setphone(string phone) { this.phone = phone; } }
测试类:
package com.entity; import java.util.date; import java.util.enumset; import org.hibernate.session; import org.hibernate.sessionfactory; import org.hibernate.transaction; import org.hibernate.cfg.configuration; import org.hibernate.service.serviceregistry; import org.hibernate.service.serviceregistrybuilder; import org.hibernate.tool.hbm2ddl.schemaexport; import org.junit.test; public class teststudents { @test public void testshemaexport(){ //创建hibernate配置对象 configuration config = new configuration().configure(); //创建服务注册对象 serviceregistry serviceregistry = new serviceregistrybuilder().applysettings(config.getproperties()).buildserviceregistry(); //生成sessionfactory sessionfactory sessionfactory = config.buildsessionfactory(serviceregistry); schemaexport export = new schemaexport(config); export.create(true,true); } @test public void addstudents(){ //创建hibernate配置对象 configuration config = new configuration().configure(); //创建服务注册对象 serviceregistry serviceregistry = new serviceregistrybuilder().applysettings(config.getproperties()).buildserviceregistry(); //生成sessionfactory sessionfactory sessionfactory = config.buildsessionfactory(serviceregistry); //创建会话 session session = sessionfactory.getcurrentsession(); //创建事务 transaction tx = session.begintransaction(); address add = new address("700005","河南理工大学","15039117115"); studentpk pk = new studentpk("012345678912345678","55555555"); students s = new students(pk,"张三丰","男",new date(),"太极拳",add,7899); session.save(s); tx.commit(); // schemaexport export = new schemaexport(config); // export.create(true,true); } }
总结
以上就是本文关于hibernate属性级别注解实例代码的全部内容,希望对大家有所帮助。感兴趣的朋友可以继续参阅本站:hibernate核心思想与接口简介、hibernate实现悲观锁和乐观锁代码介绍、等。正所谓书中自有颜如玉,下面附几本不错的书籍,供大家学习参考,在此也非常希望大家对本站多多支持。
一键下载,免费的哦:
hibernate官方入门教程 中文pdf版
java设计模式深入研究 pdf
数据挖掘:实用机器学习技术及java实现(英文第2版)高清pdf
推荐阅读
-
hibernate属性级别注解实例代码
-
Android动画 实现开关按钮动画(属性动画之平移动画)实例代码
-
Mybatis基于注解形式的sql语句生成实例代码
-
Spring Boot学习总结(21)——SpringBoot集成Redis等缓存以注解的方式优雅实现幂等,防千万次重复提交实例代码
-
PHP用正则匹配form表单中所有元素的类型和属性值实例代码
-
java Hibernate多对多映射详解及实例代码
-
java Hibernate多对多映射详解及实例代码
-
PHP用正则匹配form表单中所有元素的类型和属性值实例代码
-
Java之Spring注解配置bean实例代码解析
-
Android动画 实现开关按钮动画(属性动画之平移动画)实例代码