首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

hibernate3 annotation的范例

2012-10-11 
hibernate3 annotation的实例实例一:一个对象的增删改查:?import java.math.BigDecimalimport java.util.

hibernate3 annotation的实例

实例一:一个对象的增删改查:

?

import java.math.BigDecimal;
import java.util.Date;
import javax.persistence.Entity;
import javax.persistence.Id;
import org.hibernate.annotations.GenericGenerator;

@Entity
public class User2 implements java.io.Serializable {

?private Integer id;
?private String name;
?private String sex;
?private Date birthday;
?
?@Id
?//@GenericGenerator //可以不用,使用trigger来自增id,save()时需要setId();否则报异常
?public Integer getId() {
??return id;
?}
?public void setId(Integer id) {
??this.id = id;
?}
?public String getName() {
??return name;
?}
?public void setName(String name) {
??this.name = name;
?}
?public Date getBirthday() {
??return birthday;
?}
?public void setBirthday(Date birthday) {
??this.birthday = birthday;
?}
}

AnnotationHibernateSessionFactory与自动生成的HibernateSessionFactory.java中惟一不同的地方:

sessionFactory= new AnnotationConfiguration()?? //注意 建立 SessionFactory于前面的不同
??? ????????????????? .addPackage("com.model")
??? ????????????????? .addAnnotatedClass(User2.class)
??? ?????????????????? .configure()
??? ?????????????????? .buildSessionFactory();

?

void save(){
??Session session=AnnotationHibernateSessionFactory.getSession();
??Transaction tr=session.beginTransaction();? //事务(insert,update,delete需要事务)
??User2 u2=new User2();
??u2.setId(112);
??u2.setName("test");
??u2.setSex("男");
??u2.setBirthday(new Date());
??session.save(u2);
??tr.commit();
??session.close();
?}

?

?

实例二:

http://mydreams1983.blog.163.com/blog/static/8632879520091123102730619/?? hibernate 注解说明

* @author liuguangyi
?* @content? ejb3注解的API定义在javax.persistence.*包里面。
?*
?* 注释说明:
?* @Entity —— 将一个类声明为一个实体bean(即一个持久化POJO类)
?* @Id —— 注解声明了该实体bean的标识属性(对应表中的主键)。
?* @Table —— 注解声明了该实体bean映射指定的表(table),目录(catalog)和schema的名字
?* @Column —— 注解声明了属性到列的映射。该注解有如下的属性
?* @GenericGenerator —— 注解声明了一个hibernate的主键生成策略。支持十三种策略。该注解有如下属性
?* ?name 指定生成器名称
?* ?strategy 指定具体生成器的类名(指定生成策略)。
?* ?parameters 得到strategy指定的具体生成器所用到的参数。
? 例:@GeneratedValue(generator = "paymentableGenerator")???
?*????????? @GenericGenerator(name = "paymentableGenerator", strategy = "native")

7.sequence 调用谨慎数据库的序列来生成主键,要设定序列名,不然hibernate无法找到。
?*?????? 例:@GeneratedValue(generator = "paymentableGenerator")??
?*???@GenericGenerator(name = "paymentableGenerator", strategy = "sequence",???
?*??? parameters = { @Parameter(name = "sequence", value = "seq_payablemoney") })
?10.foreign 使用另一个相关的对象的主键。通常和<one-to-one>联合起来使用。
?*????? 例:@Id???
?*??? @GeneratedValue(generator = "idGenerator")??
?*??? @GenericGenerator(name = "idGenerator", strategy = "foreign",???
?*???????? parameters = { @Parameter(name = "property", value = "info") })???
?*??? Integer id;
?*? ?@OneToOne?
?*? ?EmployeeInfo info;

?

(三)映射主键属性

@Id

使用@Id注解可以将实体Bean中的某个属性定为为标识符(identifier)。该属性值可以通过应用自身创建,也可以通过Hibernate生成(推荐)。使用@GeneratedValue注释利用定义标识符的生产策略:

?*AUTO??????? 可以是一下三种任意一种类型,取决于地层数据库的不同

*TABLE?????? 使用表保存id值

*IDENTITY??? identity column

*SEQUENCE?? sequence

?@Id

@GeneratedValue(strategy = GenerationType.IDENTITy)

Public Integer getId() {… …}

?

在Hibernate的应用中提供了更加丰富的主键生产策略。

@org.hibernate.annotations.GenericGeneracor允许定义一个Hibernate特定的id生成器。

例:

Java代码 hibernate3 annotation的范例

?

    @Id? ?? @GeneratedValue(generator?=?"system-uuid")[该属性名自定义] ?? @GenericGenerator(name?=?"?system-uuid?",?strategy?=?"uuid") ?? [name可自定义,但是strategy属性必须是Hibernate中有效的主键策略] ?? @Column?(name?=?"user_id") ?? ?private?Integer?userId; ?? ??

热点排行