全部博文(322)
分类: Java
2010-09-19 14:44:35
使用annotation的作用
使用了annotation后可以自动不用写*.hbm.xml的配置文件。方便省事。
使用annotation的相关jar文件
在使用annotation时要用到的jar文件:
相关文件 |
对应的jar文件 |
hibernate-annotations-3.4.0.GA.zip |
hibernate-annotations.jar、lib\ejb3-persistence.jar、lib\hibernate-commons-annotations.jar、lib\slf4j-api.jar |
hibernate-distribution-3.3.2.GA-dist.zip |
hibernate3.jar、lib\required\*.jar |
数据库连接 |
mysql-connector-java-5.1.10-bin.jar |
使用annotation的一个简单实例
要让一个对象(类)使用annotation应该在一个类的头部加上:@Entity,如
import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.Table; //加了Entity才会使用到annotation,table意为创建的表名为:t_student @Entity @Table(name="t_student") public class Student { private Integer id; private String name; //让该字段为id,即设置其为主键,自动增加 @Id @GeneratedValue(strategy=GenerationType.AUTO) //修改字段的长度为5 @Column(length=5) public Integer getId() { return id; } //设置字段名为name,修改字段的长度为20 @Column(name="name",length=20) public String getName() { return name; } public void setId(Integer id) { this.id = id; } public void setName(String name) { this.name = name; } } |
以上便写好了一个简单的对象,将会创建一张名为:t_student的数据表,有一个主键id和一个name这样两个字段。要使这样一个对象能自动的生成一张数据表还应该在src目录下的hibernate.cfg.xml配置文件中加入:
<mapping class="org.zsl.exam.model.Student"/>
Hibernate.cfg.xml配置文件
Hibernate.cfg.xml配置文件内容如下:
xml version='1.0' encoding='utf-8'?> DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" ""> <hibernate-configuration> <session-factory> <property name="connection.driver_class">com.mysql.jdbc.Driverproperty> <property name="connection.url">jdbc:mysql://localhost:3306/examproperty> <property name="connection.username">examproperty> <property name="connection.password">exam123property> <property name="connection.useUnicode">trueproperty> <property name="connection.characterEncoding">UTF-8property> <property name="dialect">org.hibernate.dialect.MySQLDialectproperty> <property name="cache.provider_class">org.hibernate.cache.NoCacheProviderproperty> <property name="show_sql">trueproperty> <property name="hbm2ddl.auto">updateproperty> <mapping class="org.zsl.exam.model.Student"/> session-factory> hibernate-configuration> |
Hibernate annotation的一对多
在多的那方加入:
………… private Teacher teacher; //说明是多对一 @ManyToOne //在本表里加入外键的字段名为:tea_id @JoinColumn(name="tea_id") public Teacher getTeacher() { return teacher; } ………… |
在一的那方加入:
………… private Set //说明是一对多,mappedBy指的是在多方对象里指明外键的属性名 //targetEntity表示多方对象 @OneToMany(mappedBy="teacher",targetEntity=Student.class) public Set return students; } ………… |
Annotation的继承
要使一个对象的annotation被其它对象所继承很简单,只用在父类的头部加上:
@MappedSuperclass
如:
@MappedSuperclass public class BaseEntity { private Integer id; @Id @GeneratedValue(strategy=GenerationType.AUTO) @Column(length=5) public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } } |
这样只要继承了BaseEntity的子类都会具有一个主键id