Hibernate 中采用JPA (java persistence api)Annotation 札记
来源:互联网 发布:在线浏览器代理软件 编辑:程序博客网 时间:2024/04/30 11:17
Hibernate 中采用JPA (java persistence api)Annotation
当采用Annotation来管理实体类之后,可以得到如下公式:
PO =PO +@Annotation;
使用Annotation来定义一个实体类。
Person.java
@Entity //标明这是一个持久化类
@Table(name="peroson_table") //标明对应的数据库表
public class Person
{
/*指定使用复合主键类是Name*/
@EmbeddedId //用于标注复合类型的标识属性
@AttributeOverrides({
@AttributeOverride(name="first",column=@Column(name="person_first")),/*标明属性对应对应的列*/
@AttributeOverride(name="last",columen=@Column(name="person_last",length=20))
})
private Name name;
//普通属性
@Column(name="person_email")
private String email;
@Embedded //用于标识一个组件属性
@AttributeOverrides({
@AttributeOverrides(name="name",column=@Column(name="cat_name",length=35)),
@AttributeOverrides(Name="color",column=@Column(name="cat_color"))
private Cat pet;//组件属性,代表此人拥有的宠物。
...Name属性的set和get方法
...Email属性的set和get方法
...pet属性的set和get方法
})
//Person的Name属性就是一个复合类型的标识属性;pet属性是一个组件属性
}
上面的程序用了Name类,它是一个Person类实体的标识属性的类型,程序使用@Embeddable标注它即可。
Name.java
//修饰组件属性类
@Embeddable
Piblic class Name implements java.io.Serializable
{
Private String first;
Private String last;
//无参数的构造器
Public name()
{
}
//初始化全局属性的构造器
Public Name(String first,String laset)
{
This.first=first;
This.last=last;
}
...first属性的set、get方法
...last属性的set、get方法
//提供重写的equals方法
Public boolean equals(Object obj)
{
If(this==obj)
{
Return true;
}
If(obj.getClass()==Name.class)
{
Name target = (Name)obj;
If(target.getFirst().equals(first) && target.getLast().equals(last))
{
Return true;
}
}
Return false;
}
//提供重写的hashCode方法
Public int hashCode()
{
Return fist.hashCode()+last.hashCod()*17;
}
}
上面的Name类需要作为标识属性的类型,因此一样需要实现java.io.Serializable接口,并重写了hashCode()和equals()两个方法。
至于Person类所包含的组件属性pet,它所包含的Cat类也只要简单地使用@Embeddable修饰即可。
Cat.java
@Embeddable //可嵌入的
Public class Cat
{
Private String name;
Private String color;
//无参数的构造器
Public Cat()
{
}
//初始化全部属性的构造器
Public Cat(String name,String color)
{
This.name=name;
This.color=color;
}
....name的set和get方法
...color的set和get方法
}
一旦在实体类中通过上面的Annotation进行标注之后。Hibernate已经能够理解实体类与数据表之间的映射关系了。也就不需要*.hbm.xml文件了。此时需要将hibernate.cfg.xml文件略做修改--告诉他去加载指定实体类,而不是根据映射文件加载。
Hibernate.cfg.xml
<?xml version="1.0" encoding="GBK"?>
...指定hibernate配置文件的DTD信息
<!--hibernate-configuration是连接配置文件的根元素-->
<hibernate-configuration>
<session-factory>
...其他配置属性
...罗列所有的持久化类
<mapping class="com.feng.app.domain.Person">
<session-factory>
</hibertat-configuration>
- Hibernate 中采用JPA (java persistence api)Annotation 札记
- 5 Hibernate:Java Persistence API (JPA) 入门
- JPA-Java Persistence API
- JPA-Java Persistence API
- JPA(java persistence API)详解
- JPA 全称Java Persistence API
- JPA注解 Java Persistence API
- JPA (Java Persistence API)概述
- JPA (Java Persistence API)概述
- JPA(Java Persistence API)Java持久化API-介绍
- JPA(Java Persistence API)Java持久化API-应用
- 在MyEclips中使用JPA(Java persistence API)
- 关于java JPA (小结) Java Persistence API
- JBoss 系列六十三:JBoss 7/WildFly 集群之 Java Persistence API (JPA) - II(Hibernate查询缓存和二级缓存示例)
- JBoss 系列六十三:JBoss 7/WildFly 集群之 Java Persistence API (JPA) - II(Hibernate查询缓存和二级缓存示例)
- JBoss 系列六十三:JBoss 7/WildFly 集群之 Java Persistence API (JPA) - II(Hibernate查询缓存和二级缓存示例)
- JPA(Java Persistence API)学习总结
- JPA Java Persistence API规范简介
- mongodb源码分析(十五)replication replset模式的初始化
- 企业IT规划:如何协调IT外包和核心人才关系
- Linux C语言错误处理
- StarCraft开发:如何避免链表引起的游戏崩溃
- Low-level text rendering
- Hibernate 中采用JPA (java persistence api)Annotation 札记
- 把c++编译成flash,FlasCC新手入门
- 建造者模式(Builder Pattern)
- 根据不同的输入值实现页面跳转.structs
- ivr地址
- C++第16周项目1(1)统计字符串/字符数组
- ubuntu各文件夹简介
- fork,vfork,clone的区别Zz
- 详细介绍Linux shell脚本基础学习(实例)