hibernate的简单注解/使用

来源:互联网 发布:中国校花大赛数据库 编辑:程序博客网 时间:2024/05/27 00:40

@Entity      实体,需要插入数据库的对象。

                    必须有一个无参数的构造方法;实体Bean必须声明为public;实体Bean不能被声明为abstract。

@Table     实体对应的表信息

@id           配置主键,可以是一个属性也可以是多个属性的组合。主键可以应用于属性页可以应用于get方法。应用于属性时,改属性的get方法不会被Hibernate调用,可以去掉。

@GeneratedValue 指定主键访问策略

                                   @GeneratedValue(strategy=javax.persistence.GenerationType.IDENTITY)由数据库确定下个主键值。

                                   javax.persistence.GenerationType.AUTO:自动确定主键类型(默认)

                                   javax.persistence.GenerationType.SEQUENCE:主键是SEQUENCE类型字段(自定义主键排序类型)

@SequenceGenerator 使用Hibernate内置或者自定义的各种主键生成策略来生成主键值
@Basic 设置对象属性转载数据库的策略

                fetch:设置装载数据的策略:EAGER-加载时装载所有属性,LAZY-属性被使用时方被装载。(默认为EAGER,使用LAZY需要使用字节增长编译他的Java文件)

                optional:当前属性是否可以为null。

@Transient  不需要持久化的属性可以用transient注释标识。

@Column    列定义的注解

@Enumerated  枚举

@Temporal   描述时间格式

                         @Temporal(TemporalType.DATE)记录年月日,@Temporal(TemporalType.TIMESTAMP)记录准确时间,精确到毫秒,@Temporal(TemporalType.TIME)记录时分秒。

@Lob    大数据类型

import java.util.Date;import javax.persistence.Basic;import javax.persistence.Column;import javax.persistence.Entity;import javax.persistence.EnumType;import javax.persistence.Enumerated;import javax.persistence.FetchType;import javax.persistence.GeneratedValue;import javax.persistence.GenerationType;import javax.persistence.Id;import javax.persistence.Lob;import javax.persistence.SequenceGenerator;import javax.persistence.Table;import javax.persistence.Temporal;import javax.persistence.TemporalType;import com.sysmaster.util.EnuSex;@Entity@Table(name="T_PEOPLE")public class People {private int pid;private String name;private EnuSex sex;private Date birthday;private String introduce;@Id//主键@SequenceGenerator(name="seq",sequenceName="SEQ_PEOPLE",initialValue=1,allocationSize=20)@GeneratedValue(generator="seq")//使用自定义sequencepublic int getPid() {return pid;}public void setPid(int pid) {this.pid = pid;}@Column(length=10)//设置该属性的长度为10public String getName() {return name;}public void setName(String name) {this.name = name;}@Enumerated(EnumType.STRING)//设置为Stringpublic EnuSex getSex() {return sex;}public void setSex(EnuSex sex) {this.sex = sex;}@Lob@Basic(fetch=FetchType.LAZY)//大数据延迟加载,需要使用字节增强编译public String getIntroduce() {return introduce;}public void setIntroduce(String introduce) {this.introduce = introduce;}@Temporal(TemporalType.TIMESTAMP)//设置时间存入类型public Date getBirthday() {return birthday;}public void setBirthday(Date birthday) {this.birthday = birthday;}}
字节增强编译使用xml 的Ant 编译,代码如下:

<?xml version="1.0" encoding="UTF-8"?><project name="myh" default="instrument" basedir=".">  <property name="lib.dir" value="./WEB-INF/lib"/><!--所使用的类库所在位置-->  <property name="classes.dir" value="../build/classes"/><!--你的编译class文件所在位置 -->    <path id="lib.class.path">     <fileset dir="${lib.dir}">         <include name="**/*.jar"/>     </fileset>  </path>  <target name="instrument">     <taskdef name="instrument"         classname="org.hibernate.tool.instrument.javassist.InstrumentTask">        <classpath path="${classes.dir}"/>        <classpath refid="lib.class.path"/>     </taskdef>             <instrument verbose="true">        <fileset dir="${classes.dir}/com/sysmaster/po"><!--文件所在包-->           <include name="People.class"/><!--需要增强处理的文件-->        </fileset>     </instrument>  </target></project>

0 0
原创粉丝点击