Chinaunix首页 | 论坛 | 博客
  • 博客访问: 871751
  • 博文数量: 322
  • 博客积分: 6688
  • 博客等级: 准将
  • 技术积分: 3626
  • 用 户 组: 普通用户
  • 注册时间: 2010-09-19 11:26
文章分类

全部博文(322)

文章存档

2013年(5)

2012年(66)

2011年(87)

2010年(164)

分类: 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.jarlib\ejb3-persistence.jarlib\hibernate-commons-annotations.jarlib\slf4j-api.jar

hibernate-distribution-3.3.2.GA-dist.zip

hibernate3.jarlib\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才会使用到annotationtable意为创建的表名为: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 students;

//说明是一对多,mappedBy指的是在多方对象里指明外键的属性名

//targetEntity表示多方对象

    @OneToMany(mappedBy="teacher",targetEntity=Student.class)

public Set getStudents() {

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

 

阅读(946) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~