`
- 浏览:
72286 次
- 性别:
- 来自:
广州
-
- 注意import javax.xx.Entity ,而不是org.hibernate.xx.Entity。
- Descn属性不存在于数据库中,用@Transient 注明
- ------------------------------------------
- 1,需要: Hibernate库文件,Hibernate Annotations库,ejb3-persstence.jar(Java 持久化API)
- sessionFactory=new AnnotationConfiguration().buildSessionFactory();
- ------------------------------------------
- 2,<bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
- <property name="annotatedClasses">
- <list>
- <value>com.onjava.modelplanes.domain.PlaneType</value>
- </list>
- </property>
- </bean>
- ------------------------------------------
- 1,@Entity
- @Table(name = "teacher_info")
- @IdClass(UUIDHexGenerator.class)
- public class UserMember implements java.io.Serializable
- 2,@entity通过getters/setters方法访问,或直接访问他的成员变量。
- @Entity(access = AccessType.PROPERTY)
- @Entity(access = AccessType.FIELD)
- ------------------------------------------
- 映射标识符
- 1,@Id
- @GeneratedValue(strategy = GenerationType.AUTO)
- private String id;
- 2,@Id(generate=GeneratorType.SEQUENCE, generator='SEQ_STORE')
- 3,@Id(generate=GeneratorType.IDENTITY)
- ------------------------------------------
- 映射属性
- 1,@Transient
- 2,@Column(name="PLANE_ID", length=80, nullable=true)
- 3,@Basic(fetch = FetchType.LAZY)
- 4,@Serialized 凡标识@Serialized的属性将被序列化
- public Country getCountry() { ... }
- 5,@Lob标识了存储对象可能是个CLOB或者BLOB。
- @Lob(type=LobType.CLOB)
- public String getFullText(){return fullText;}
- @Lob(type = LobType.BLOB)
- public byte[] getFullCode() {return fullCode;}
- @Version 定义乐观锁机制使用
- ------------------------------------------
- 关联关系:
- 一、一对一:
- 1,@OneToOne(mappedBy = "address")
- public User getUser() {
- return user;
- }
- 1、两边都定义了@OneToOne,但都没有定义mappedBy,则user和address表都会生成到对方的外键,双方都是这个关系的拥有者。
- 2、两边都定义了@OneToOne,如果user定义了mappedBy,则在address表生成到user的外键,address是这个关系的拥有者;如果address定义
- 了mappedBy,则在user表生成到address的外键,user是这个关系的拥有者。
-
- 二、一对多,多对一:
- 2,@ManyToOne( cascade = {CascadeType.PERSIST, CascadeType.MERGE} )
- 3,@OneToMany(mappedBy="planeType",cascade=CascadeType.ALL, fetch=FetchType.EAGER)
- @OrderBy("name")
- public List<ModelPlane> getModelPlanes() {
- return modelPlanes;
- }
- 其中定义mappedBy的是@OneToMany,也就是说One这一方是关系的拥有者。Many一方的表中生成到关联类的外键。
-
- 三、@ManyToMany
- private Set authors = new HashSet<Author>();
- @ManyToMany
- public Set<Author> getAuthors(){
- return authors;
- }
-
- private Set books = new HashSet<Book>();
- @ManyToMany(mappedBy="authors")
- public Set<Book> getBooks(){
- return books;
- }
- @ManyToMany会生成中间表,具体表名和字段可以通过@AssociationTable来定义,默认的就可以了,同样关系的非拥有者,需要定义mappedBy属性。
- ------------------------------------------
- 命名查询
- 你也可以通过注解,利用@NameQueries和@NameQuery注解,如下:
- @NamedQueries(
- {
- @NamedQuery(name="planeType.findAll",query="select p from PlaneType p" ),
- @NamedQuery(name="planeType.delete",query="delete from PlaneType where id=:id" )
- }
- )
- ------------------------------------------
- 内嵌对象(组件)
- @Embedded({
- @AttributeOverride(name='iso2', column = @Column(name='bornIso2') ),
- @AttributeOverride(name='name', column = @Column(name='bornCountryName') )
- })
- Country bornIn;
- ...
- }
-
- @Embeddable(access = AccessType.FIELD)
- public class Address implements Serializable {
- String city;
- Country nationality;
- }
-
-
- @Embeddable
- public class Country implements Serializable {
- private String iso2;
- private String name;
-
- public String getIso2() { return iso2; }
- public void setIso2(String iso2) { this.iso2 = iso2; }
-
- @Column(name='countryName')
- public String getName() { return name; }
- public void setName(String name) { this.name = name; }
- ...
- }
- ------------------------------------------
- 自定义的主键生成策略
- @javax.persistence.GeneratedIdTable(
- name='GEN_TABLE',
- table = @Table(name='GENERATOR_TABLE'),
- pkColumnName = 'key',
- valueColumnName = 'hi'
- )
-
- @javax.persistence.TableGenerator(
- name='EMP_GEN',
- tableName='GEN_TABLE',
- pkColumnValue='EMP',
- allocationSize=20
- )
- @javax.persistence.SequenceGenerator(
- name='SEQ_GEN',
- sequenceName='my_sequence'
- )
- package org.hibernate.test.metadata;
分享到:
Global site tag (gtag.js) - Google Analytics
相关推荐
现在已经不用*.hbm.xml这种映射文件了,都是用Annotation(注解)方式来完成实体与表之间的映射关系,这样看起来比用xml文件来映射更具有可读性,自我感觉以后Hibernate Annotation的映射方式将代替hibernate 的*....
hibernate-annotations-3.4.0.GA hibernate-annotations-3.4.0.GA hibernate-annotations-3.4.0.GA
Hibernate Annotations API 中文文档 前言 1. 创建一个注解项目 1.1. 系统需求 1.2. 系统配置 2. 实体Bean 2.1. 简介 2.2. 用EJB3注解进行映射 2.2.1. 声明实体bean 2.2.1.1. 定义表(Table) 2.2.1.2. 乐观...
hibernate annotations 中文参考手册
Hibernate Annotations 中文版
webwork2.1.7 中文开发文档 Hibernate Annotations参考文档-3.20中文开发文档 Hibernate_3.2.0_Reference_zh_CN中文开发文档
hibernate annotations 3.4.0.GA API
hibernate 和hibernate_annotations(中文API)帮助文档。
hibernate annotations
hibernate annotations 的中文帮助文档 可以帮您更好的学习hibernate 的注解配置
Hibernate3.2 Annotations中文文档 Hibernate3.2 Annotations中文文档 Hibernate3.2 Annotations中文文档 网页格式
NULL 博文链接:https://xiongjiajia.iteye.com/blog/1947270
Hibernate Annotations API英文版,CHM格式
hibernate annotations 核心包,欢迎下载
hibernate-annotations-3.4.0
hibernate-annotations.jar
使用注解Annotation时用的jar包。 包括: hibernate-commons-annotations-3.3.0.ga.jar hibernate-entitymanager.jar ejb3-persistence.jar hibernate-annotations.jar
hibernate-annotations-3.4.0.CR1中文电子书
解压后可得hibernate-annotations.jar和hibernate-annotations-src.zip,hibernate-annotations-src.zip为hibernate-annotations.jar的源代码