`
gkm422
  • 浏览: 82502 次
  • 性别: Icon_minigender_1
  • 来自: 太原
社区版块
存档分类
最新评论

Hibernate Annotations笔记

阅读更多
注意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;  
分享到:
评论

相关推荐

    hibernate学习笔记.

    【hibernate学习笔记】 在Java开发中,Hibernate是一个强大的对象关系映射(ORM)框架,它极大地简化了数据库操作。以下是对Hibernate的学习要点的详细解释: 1. **建立第一个Hibernate版本的HelloWorld** - **...

    Hibernate Annotation 笔记 总结 注解

    2. **依赖**:使用Hibernate Annotation需要引入相关的JAR包,包括`hibernate-annotations.jar`、`hibernate-commons-annotations.jar`以及`ejb3-persistence.jar`。如果使用Maven,可以在POM.xml文件中添加相应的...

    Hibernate3 学习笔记.ppt

    Hibernate Annotations是Hibernate支持的一种元数据表示形式,它允许开发者在Java类和类的属性上直接使用注解来定义O/R Mapping。常见的注解有@Entity表示实体类,@Table定义对应的数据库表,@Id标识主键,@...

    尚学堂hibernate笔记

    ### 尚学堂Hibernate笔记知识点详解 #### 一、项目初始化与环境搭建 1. **新建项目**:在IDE中创建一个新的Java项目。 2. **构建用户库并添加所需的JAR包**: - 右键点击项目 -&gt; `Build Path` -&gt; `Configure ...

    Hibernate Annotation 学习笔记

    《Hibernate Annotation 学习笔记》 在Java的持久化框架中,Hibernate以其强大的功能和易用性成为开发者首选之一。而Hibernate Annotation则是Hibernate提供的一种基于注解的实体映射方式,它极大地简化了传统XML...

    hibernate笔记

    - Hibernate Annotations:例如hibernate-annotations-3.4.0.GA。 - 注意查看Hibernate兼容性矩阵以确保正确版本搭配。 - 安装MySQL数据库并准备相应的JDBC驱动。 - 根据教程步骤配置项目和数据库,完成HelloWorld...

    Hibernate5.0-4天学习笔记.rar

    《Hibernate5.0四日学习精粹:JavaEE49期黑马程序员教程解析》 Hibernate,作为Java领域中广泛使用的对象关系映射(ORM)框架,极大地简化了数据库操作,使得开发者可以专注于业务逻辑,而无需过多关注底层SQL的...

    Hibernate Annotation笔记

    此外,还需要添加Hibernate Annotations库以及JPA API库。如果使用Maven管理项目依赖,则可以在`pom.xml`文件中添加以下依赖项: ```xml &lt;groupId&gt;org.hibernate &lt;artifactId&gt;hibernate-core &lt;version&gt;5.x....

    hibernate 笔记

    本文主要基于一份关于 Hibernate 的学习笔记,详细阐述 Hibernate 的基本配置流程及常见问题。 #### 二、Java 配置 Hibernate 配置 Hibernate 并不是一项特别复杂的工作,但需要注意一些细节,否则很容易出现错误...

    Hibernate开发资料

    在这个版本中,Hibernate引入了新的功能,如Criteria API和Hibernate Annotations,这使得无需XML配置即可进行对象映射。阅读此手册,开发者可以了解到这些新特性如何使用,以及它们如何改进了开发流程。 5. **...

    spring_hibernate_anotations

    至于文件名“spring+hibernate-annotations - 御剑江湖 之 开发笔记 - JavaEye技术网站.htm”和其附属文件,这似乎是一个关于整合Spring和Hibernate注解的开发笔记,可能包含了详细的步骤、示例代码和最佳实践。...

    jpa学习笔记

    - `hibernate-annotations-3.4.0.GA`:支持 JPA 注解。 - `Hibernate-annotations.jar`:主注解库。 - `Lib\ejb3-persistence.jar`:EJB3 持久化支持。 - `Hibernate-commons-annotations.jar`:通用注解支持。 ...

    hibernate总结--云图智联

    利用注解(Annotations)和Criteria查询可以进行更加面向对象的数据库操作;在MyBatis入门章节中,则介绍了如何使用MyBatis框架替代JDBC,尽管MyBatis自身不属于Hibernate框架。 持久化是Hibernate的一个核心概念,...

    java学习笔记(文字整理版).doc

    - **环境准备**:提供了下载地址和版本信息,如`hibernate-distribution-3.3.2.GA-dist`、`hibernate-annotations-3[1].4.0.GA`等。 #### 七、总结 通过以上知识点的学习,我们不仅掌握了Java语言的基础知识,还...

    spring 使用 Jpa的笔记

    5. **hibernate-commons-annotations.jar**:Hibernate内部使用的注解处理库。 6. **slf4j-api.jar** 和 **slf4j-log4j12.jar**:用于日志记录的标准接口及其实现。 7. **hibernate-core.jar**:Hibernate核心库。 8...

    Spring2.5学习笔记

    6. **集成主流框架**:Spring 对许多主流的应用框架进行了良好的集成,比如 Hibernate、JPA、Struts 等,使得开发者可以更加专注于业务逻辑的实现。 #### 三、控制反转 (IOC) 和依赖注入 (DI) 1. **控制反转**:...

Global site tag (gtag.js) - Google Analytics