ImageVerifierCode 换一换
格式:DOCX , 页数:50 ,大小:28.74KB ,
资源ID:7423956      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/7423956.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(hibernate注解.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

hibernate注解.docx

1、hibernate注解Hibernate Annotation使用hibernate Annotation来映射实体准备工作下载hibernate-distribution-3.3.2.GAhibernate-annotations-3.4.0.GAslf4j导入相关依赖包Hibernate HOME:hibernate3.jarlibbytecode(二进制)liboptional(可选的)librequired(必须的)导入required下的所有jar包antlr-2.7.6.jarcommons-collections-3.1.jardom4j-1.6.1.jarhibernate3.

2、jarjavassist-3.9.0.GA.jarjta-1.1.jarslf4j-api-1.5.10.jarslf4j-log4j12-1.5.10.jarlog4j-1.2.14.jarmysql.jar-Annotation包ejb3-persistence.jarhibernate-annotations.jarhibernate-commons-annotations.jar简单的例子,通过annotation注解来映射实体PO1、建立(Java Project)项目:hibernate_0100_annotation_HelloWorld_default2、在项目根下建立lib目

3、录a) 导入相关依赖jar包antlr-2.7.6.jarcommons-collections-3.1.jardom4j-1.6.1.jarejb3-persistence.jarhibernate-annotations.jarhibernate-commons-annotations.jarhibernate3.jarjavassist-3.9.0.GA.jarjta-1.1.jarlog4j-1.2.14.jarmysql.jarslf4j-api-1.5.10.jarslf4j-log4j12-1.5.10.jar3、建立PO持久化类 cn.serup.model.Teacher 内

4、容如下package cn.serup.model;import javax.persistence.Entity;import javax.persistence.Id;/Entity表示该是实体类Entitypublic class Teacher private int id ; private String username ; private String password ; /ID为主键,主键手动分配 Id public int getId() return id; public void setId(int id) this.id = id; public String get

5、Username() return username; public void setUsername(String username) this.username = username; public String getPassword() return password; public void setPassword(String password) this.password = password; 4、在src目录中建立hibernate.cfg.xml(hibernate配置文件)文件,内容如下!DOCTYPE hibernate-configuration PUBLIC -/H

6、ibernate/Hibernate Configuration DTD 3.0/EN jdbc:mysql:/localhost/hibernate root saber com.mysql.jdbc.Driver org.hibernate.dialect.MySQLDialect true thread 5.、建立新的源码包testa) 编写单元测试,结构如下cn.serup.hibernate.test.TeacherTest 内容如下:package cn.serup.hibernate.test;import org.hibernate.Session;import org.hib

7、ernate.SessionFactory;import org.hibernate.cfg.AnnotationConfiguration;import org.hibernate.tool.hbm2ddl.SchemaExport;import org.junit.AfterClass;import org.junit.BeforeClass;import org.junit.Test;import cn.serup.model.Teacher;public class TeacherTest private static SessionFactory sessionFactory ; T

8、est public void testSaveTeacher() Teacher t = new Teacher() ; t.setId(2) ; t.setUsername(努尔哈赤) ; t.setPassword(12345) ; Session session = sessionFactory.getCurrentSession() ; session.beginTransaction() ; session.save(t) ; session.beginTransaction().commit() ; BeforeClass public static void beforeCla

9、ss() new SchemaExport(new AnnotationConfiguration().configure().create(true, true) ; sessionFactory = new AnnotationConfiguration().configure().buildSessionFactory() ; AfterClass public static void afterClass() sessionFactory.close() ; Annotation表名称与字段映射,长度1、项目:hibernate_0200_annotation_column2、表名称映

10、射,在默认情况下使用Entity,则使用类名做为表名3、所有的注解写在get()方法上面4、表名映射a) Table(name=t_teacher)3、字段映射a) 默认情况下,则使用属性名称来作为列名(字段名)b) 在get()方法上写注解i. Column(name=t_username)ii. 长度iii. Column(name=t_username,length=35)c) 默认情况下会将所有的属性映射到表中,如果不想某个属性映射到表中,如下编写i. Transient(瞬时、临时(或者透明)Annotation映射主键属性(ID生成策略)1、项目:hibernate_0300_an

11、notation_ID2、使用Id注解可以将实体bean中的某个属性定义为标识符(identifier),该属性的值可以通过应用自身进行设置(ID手动分配,但不能重复)3、(EJB3规范)也可以通过Hiberante生成(推荐). 使用 GeneratedValue注解可以定义该标识符的生成策略: AUTO - 可以是identity column类型,或者sequence类型或者table类型,取决于不同 的底层数据库. TABLE - 使用表保存id值 IDENTITY - identity column SEQUENCE - sequenceAUTO相当于XML映射文件中的Native4

12、、AUTO ,写上GeneratedValue则会默认选择AUTO来生成主键,会根据你的方言来选择数据库提供的自增机制,作为主键的生产策略,如果数据库是MySQL,则使用auto_incrementIdGeneratedValue/或者GeneratedValue(strategy=GenerationType.AUTO)public int getId() . 5、IDENTITY 取得最大的ID值+1,作为主键IdGeneratedValue(strategy=GenerationType.IDENTITY)public int getId() . 6、TABLE 使用hilo(高低位算法

13、,来产生主键)IdGeneratedValue(strategy=GenerationType.TABLE)public int getId() . 7、SEQUENCE Oracle的自增机制IdGeneratedValue(strategy=GenerationType.SEQUENCE)public int getId() . 使用Oracle的SEQUENCE 的话。他会自动建一张SEQUENCE 表,默认表名hibernate_sequence如果想改SEQUENCE 表名的话。如下编写SequenceGenerator(name=aa,sequenceName=teacherSEQ

14、_DB)public class Teacher IdGeneratedValue(strategy=GenerationType.SEQUENCE,generator=aa)public int getId() . 说明:SequenceGenerator(name=aa,sequenceName=teacherSEQ_DB)Name为引用名称sequenceName为表名称GeneratedValue(strategy=GenerationType.SEQUENCE,generator=aa)使用类SEQUENCE为主键生成策略,更改表名,使用generator=aa引用类上定义好的aaA

15、nnotation关系映射1、一对一外键关联映射(单向)2、一对一外键关联映射(双向)3、一对一主键关联映射(不重要)在这不演示在实际中很少用,使用注解PrimaryKeyJoinColumn意思是说,我的主键去参考另外一张表中的主键,作为我的主键,但是在我测试使用注解一对一主键关联映射,在生成表的时候,数据库中并没有生成关联,使用XML映射可以生成。Annotation注解一对一主键关联映,有些bug。不过没空去研究它。因为在实际开发中一对一很少用。在实际开发中我机会没有用过,主键关联就更少了4、多对一关联映射5、一对多关联映射(单向)6、一对多关联映射(双向)7、多对多关联映射(单向)8、

16、多对多关联映射(双向)一对一外键关联映射(单向)1、项目:hibernate_0400_annotation_one2one_fk_12、建立POa) cn.serup.model.Bodyb) cn.serup.model.Heartpackage cn.serup.model;import javax.persistence.Entity;import javax.persistence.GeneratedValue;import javax.persistence.Id;import javax.persistence.JoinColumn;import javax.persistenc

17、e.OneToOne;Entitypublic class Body private int id ; private String bodyName ; private Heart heart ; public String getBodyName() return bodyName; OneToOne(cascade=CascadeType.ALL) JoinColumn(name=bodyid,unique=true) /一对一外键关联,使用OneToOne,并设置了级联操作 /JoinColum设置了外键的名称为bodyid如果不设置,则默认为heart_id /外键的值是唯一的(un

18、ique),不可重复,与Heart的主键一直 public Heart getHeart() return heart; Id GeneratedValue public int getId() return id; public void setBodyName(String bodyName) this.bodyName = bodyName; public void setHeart(Heart heart) this.heart = heart; public void setId(int id) this.id = id; package cn.serup.model;import

19、javax.persistence.Entity;import javax.persistence.GeneratedValue;import javax.persistence.Id;Entitypublic class Heart private int id ; private String heartName ; Id GeneratedValue public int getId() return id; public void setId(int id) this.id = id; public String getHeartName() return heartName; pub

20、lic void setHeartName(String heartName) this.heartName = heartName; 编写单元测试cn.serup.hibernate.test.One2One_1package cn.serup.hibernate.test;import org.hibernate.Session;import org.hibernate.SessionFactory;import org.hibernate.cfg.AnnotationConfiguration;import org.hibernate.tool.hbm2ddl.SchemaExport;

21、import org.junit.AfterClass;import org.junit.BeforeClass;import org.junit.Test;import cn.serup.model.Body;import cn.serup.model.Heart;public class One2One_1 private static SessionFactory sessionFactory ; Test public void testSaveTeacher() Heart h = new Heart() ; h.setHeartName(h2) ; Body b = new Bod

22、y() ; b.setBodyName(b2) ; b.setHeart(h) ; Session session = sessionFactory.getCurrentSession() ; session.beginTransaction() ; session.save(h) ; session.save(b) ; session.beginTransaction().commit() ; Test public void testLoadOne2One() Session session = sessionFactory.getCurrentSession() ; session.be

23、ginTransaction() ; Body b = (Body) session.get(Body.class, 1) ; System.out.println(b.getId() + +b.getBodyName(); Heart h = b.getHeart() ; System.out.println(h.getId() + +h.getHeartName(); session.beginTransaction().commit() ; Test public void testDeleteOne2One() Session session = sessionFactory.getC

24、urrentSession() ; session.beginTransaction() ; Body b = (Body) session.get(Body.class, 1) ; session.delete(b) ; session.beginTransaction().commit() ; BeforeClass public static void beforeClass() new SchemaExport(new AnnotationConfiguration().configure() .create(true, true) ; sessionFactory = new Ann

25、otationConfiguration().configure() .buildSessionFactory() ; AfterClass public static void afterClass() sessionFactory.close() ; 一对一双向关联关系:hibernate_0500_annotation_one2one_fk_2改动Heart对象package cn.serup.model;import javax.persistence.CascadeType;import javax.persistence.Entity;import javax.persistenc

26、e.GeneratedValue;import javax.persistence.Id;import javax.persistence.OneToOne;Entitypublic class Heart private int id ; private String heartName ; private Body body ; OneToOne(mappedBy=heart,cascade=CascadeType.ALL) /一对一双向关联关系,使用OneToOne /注意:需要加上mappedBy=heart,如果不加上的话, /Heart也会生成一个外键(body_id) /mapp

27、ed=heart需要指向与他关联对象的一个属性 /说明双向关联关系中,有且仅有一端是作为主体(owner)端存在的 /主体端负责维护联接列 /对于不需要维护这种关系的从表则通过mappedBy属性进行声明 /mappedBy的值指向主体的关联属性 /规律:只有是双向关联关系,都加上mapped /cascade=CascadeType.ALL级联 public Body getBody() return body; public void setBody(Body body) this.body = body; Id GeneratedValue public int getId() return id; public void setId(int id) this.id = id; public String getHeartName() return heartN

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1