Hibernate笔记.doc_第1页
Hibernate笔记.doc_第2页
Hibernate笔记.doc_第3页
Hibernate笔记.doc_第4页
Hibernate笔记.doc_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

乐观锁:在中使用乐观锁声明,其中 column属性值version指定数据库表中用作数据版本的字段(数据版本的字段名还可以是其他名字),name属性指定Bean中的version属性值 用于和数据库中的字段对应。type指定属性数据类型。 optimistic的值有4个:none表示不使用乐观锁;version使用数据版本机制实现乐观锁;是 optimistic-lock的默认值;dirty通过检查脏数据实现乐观锁;all通过检查所有属性实现乐观锁;注意标签必须紧跟标签,而不能在标签之后 2、hibernate注解映射package oneToMany;import java.util.HashSet;import java.util.Set;import javax.persistence.CascadeType;import javax.persistence.Column;import javax.persistence.Entity;import javax.persistence.FetchType;import javax.persistence.GeneratedValue;import javax.persistence.Id;import javax.persistence.JoinColumn;import javax.persistence.ManyToOne;import javax.persistence.OneToMany;import javax.persistence.Table;import org.hibernate.annotations.GenericGenerator;Entity/下面注解指定持久化类对应的数据表,name指定表名。catalog指定数据库名,schema指定用户模式,Table(name=Grade,catalog=orcl,schema=)public class Grade private int gid;private String gname;private String gdesc;private Set students = new HashSet();/GenericGenerator创建主键生成器,那么是生成器的名字,strategy是主键生成策略,此处是自增GenericGenerator(name=generator,strategy=increment)/使用Id注解指定主键,该注解必须在get()方法之上Id/指定主键生成器GeneratedValue(generator=generator)/或者不用创建主键生成器,直接使用GeneratedValue(strategy = GenerationType.AUTO)/column注解指定该属性对应的数据库表中的主键列,name指定列名,nullable指定属性是否为空,length指定Id的长度Column(name=id,unique=true,nullable=true,length=20)public int getGid() return gid;public void setGid(int gid) this.gid = gid;/级联操作,cascade指定级联的类型,mappedBy指定该属性映射的表,fetch指定级联加载的类型:懒加载与立即加载OneToMany(cascade=CascadeType.ALL,mappedBy=student,fetch=FetchType.LAZY)public Set getStudents() return students;public void setStudents(Set students) this.students = students;public int getId() return gid;public void setId(int id) this.gid = id;/映射表中的gname列,指定长度,非空属性及是否唯一Column(name=gname,length=10,nullable=true,unique=false)public String getGname() return gname;public void setGname(String gname) this.gname = gname;/指定多对已映射的列及加载模式,JoinColumn指定外键关联列ManyToOne(fetch=FetchType.LAZY)JoinColumn(name=g_id)/Formula(公式)的作用是通过一个公式来为持久化类添加一个属性,让数据库来执行计算操作,而不必用虚拟机,同时/他是一个虚拟列,在数据库表中没用对应的列;注意1、公式一定要用双引号括起2、若SQL语句中有子查询,则表必须使用别名/formula=(),里面的是sql语句,字段和表名都应该和数据库相应Formula(select count(*) from Grade)public String getGdesc() return gdesc;public void setGdesc(String gdesc) this.gdesc = gdesc;3、merge与saveOrUpdate(save、update)方法区别:两者都会根据主键判断对象是持久太还是临时态,若是临时太则调save方法,若是持久态则调用update方法;区别是当session调用load或get方法获得一个持久态对象后关闭了session使持久态变成游离态,之后又开启了session,又调用load或get方法获得同一个持久态对象,同样的调用update方法会将游离态对象又变成持久态对象,这样session中会有两个同样的持久态对象,调用update方法会产生冲突,但是merge方法会将游离态对象的值赋给持久态对象,而不改变游离态对象的状态。总之:update方法会将游离态对象变成持久态,而merge方法不会改变对象的状态,他只会将游离态的值赋给持久态对象。4、spring配置文件中haibernate使用数据源一、使用JNDI(连接池)作为数据源java:/comp/env/jndi二、使用dbcp.BasicDataSource(连接池)作为数据源 5、配置spring会话工厂一、 org.hibernate.dialect.OracleDialect true true org.hibernate.cache.EhCacheProvider true true entity/User.hbm.xml entity/Mail.hbm.xml entity/Vocation.hbm.xml 二、配置BeanFactoryPostprocesser(Bean工厂后处理器),用以加载属性文件: classpath:dataSperties 三、属性文件配置dataSperties:mysql.database.driver=com.mysql.jdbc.Drivermysql.database.url=jdbc:mysql:/:3306/test?useUnicode=true&characterEncoding=utf-8 mysql.database.user=root mysql.database.password=lishunli mysql.database.maxActive=100 mysql.database.maxIdle=30 mysql.database.maxWait=5006、配置hibernate事物管理器 7、使用AOP进行(声明式)事务管理一、定义切面: /定义事务的方法及事务属性(传播行为和隔离级别) 二、配置切面(切入点pointcut和切面advicor): 8、导入相关资源:9使用hibernate注解(使用,号和ALT+/可以进行注解的属性提示功能)Embeddable/表明该类将作为一个组件类型public class Contact private String email;/ 电子邮件 private String address;/ 联系地址 private String zipCode;/ 邮政编码 private String contactTel;/ 联系电话 public Contact() public Contact(String email, String address, String zipCode,String contactTel) this.email = email; this.address = address; this.zipCode = zipCode; this.contactTel = contactTel; Column(name =email, length = 64, nullable = true) public String getEmail() return email; public void setEmail(String email) this.email = email; Column(name =address, length = 64, nullable = true) public String getAddress()return address; public voidsetAddress(String address)this.address = address; Column(name =zipCode, length = 6, nullable = true) public String getZipCode()return zipCode; public voidsetZipCode(String zipCode) this.zipCode = zipCode; Column(name =contactTel, length = 32, nullable = true) public String getContactTel() return contactTel; public void setContactTel(String contactTel) this.contactTel = contactTel;Temporal(TemporalType.DATE)日期型字段:日期映射日期与时间类型,指定时间精度:a)Annotation:Temporal(参数) 参数有3种 只显示时间,只显示日期,时间日期都显示Temporal(TemporalType.DATE) 只显示日期Temporal(TemporalType.TIME) 只显示时间Temporal(TemporalType.TIMESTAMP)显示日期与时间Employee* 用户 component(组件、部分)映射 /指明实体Bean名,默认值是类名Entity(name =Employee)/实体对应的数据表name表名;uniqueConstraints唯一约束性;主键Table(name =t_employee, uniqueConstraints = UniqueConstraint(columnNames = id ) )public classEmployee private int id; private String name; /组件类型 Embedded private Contact contact; Id /主键唯一标识 Column(name = id)/字段名 GeneratedValue(strategy = GenerationType.AUTO) /自动增加 public int getId() return id; public void setId(int id) this.id = id; Column(name = name, length = 16, nullable = false) /name字段名,length字段最大字符长度,nullable是否允许为空,precision字段精度,scale小数位数 publicString getName() return name; public void setName(String name) = name; publicContact getContact() return contact; public void setContact(Contact contact) this.contact = contact;Entity(name =User)/实体对应的数据表name表名;uniqueConstraints唯一约束性;主键Table(name =t_user, uniqueConstraints = UniqueConstraint(columnNames = id ) )public class User private int id;private String name;private Set roles; Id /主键唯一标识 Column(name = id) /字段名 GeneratedValue(strategy = GenerationType.AUTO) /自动增加 public int getId() return id; public void setId(int id) this.id = id; Column(name = name, length = 16, nullable = false) /name字段名,length字段最大字符长度,nullable是否允许为空,precision字段精度,scale小数位数 public String getName() return name; public void setName(String name) = name;/ 设置关联表/ inverseJoinColumns 被关系维护端在关联表中的外键/ joinColumns 关系维护端在关联表中的外键JoinTable(name = t_role_user, inverseJoinColumns = JoinColumn(name = roleID), joinColumns = JoinColumn(name = userID)ManyToMany(cascade = CascadeType.REFRESH,targetEntity=Role.class)public Set getRoles() return roles; public void setRoles(Set roles) this.roles = roles;10、使用hibernate注解配置的会话工厂: org.hibernate.dialect.MySQL5Dialect false org.usc.beans.Student org.usc.beans.Teacher 11、使用HibernateDaoSupport或者HibernateTemplate操作数据库;使用Spring提

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论