Hibernate4的常用注解的应用

得闲没事做,就写下博客,消磨下时间,下面介绍下 hibernate4的常用注解,中意的话随便留言。

步骤一:
用myec配置好hibernate环境。
步骤二:
在src下创建hibernate.cfg.xml
代码如下:
<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
          "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
          "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<!-- Generated by MyEclipse Hibernate Tools.                   -->
<hibernate-configuration>
    <session-factory>
        <property name="dialect">org.hibernate.dialect.MySQL5InnoDBDialect</property>
        <property name="connection.url">jdbc:mysql://localhost:3306/hibernate</property>
        <property name="connection.username">root</property>
        <property name="connection.password">admin</property>
        <property name="connection.driver_class">com.mysql.jdbc.Driver</property>
      <property name="hbm2ddl.auto">update</property>
    <property name="show_sql">true</property>
    <property name="format_sql">true</property>
    <property name="use_sql_comments">true</property>
    <mapping class="pojo.User"/>  
 
    </session-factory>
</hibernate-configuration>


步骤3创建
User类跟UserTest类,最后运行。
User类代码:
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.SortedSet;
import java.util.TreeSet;


import javax.persistence.*;


import org.hibernate.annotations.Formula;
import org.hibernate.annotations.Sort;
/**
 * 
 * @author yx
 *Table支持的属性有:1,catalog,用于设置将持久化类的表放入指定的catalog,一般默认。
 *indexes 为持久化类所映射的表设置索引,属性值是一个@index注解数组。
 *name :设置映射的表名。
 *schema:一般默认,(我没有试过这个)
 *uniqueConstranints ,设置唯一约束。
 */
@Entity
@Table(name="user_inf")
public class User {
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
@Column(name="user_id")
private int id; //定义id ,主键生成策略 ,identity
@Column(name="user_username")           //数据库生成的名字
private String username; //用户名
private String password; //密码
@Temporal(TemporalType.DATE)  //不保存时间,只保存日期
private Date date; //生日日期
@Formula("(select COUNT(*) from user_inf)")
private int count;  //数据表所有记录条数
@Transient           //使用该注释将不保存到数据库
private String address; //用户地址

/**

* 以下就是使用List集合属性映射。
* @return
*/
@ElementCollection(targetClass=String.class) //告诉hibernate集合元素的类型
@CollectionTable(name="classmate_inf", //集合表的名字。
joinColumns=@JoinColumn(name="user_id",nullable=false))
//外键,非常简单,不想过多论述。
@Column(name="user_classmate")
@OrderColumn(name="classmate_order")  //用于映射集合的索引列
private List<String> classmates=new ArrayList<>();
/**

* 以下介绍Map集合属性
* @return
*/
@ElementCollection(targetClass=Float.class)  //集合属性,保留关联的考试成绩。
@CollectionTable(name="score_inf", //映射分数表
joinColumns=@JoinColumn(name="user_id",nullable=false))//外键
@MapKeyColumn(name="subject_name") //列名
@MapKeyClass(String.class) //指定Map key类型为String类型。
@Column(name="mark") //列名
private Map<String ,Float> scores=new HashMap<String ,Float>();

public Map<String, Float> getScores() {
return scores;
}
public void setScores(Map<String, Float> scores) {
this.scores = scores;
}
public List<String> getClassmates() {
return classmates;
}
public void setClassmates(List<String> classmates) {
this.classmates = classmates;
}
public int getCount() {
return count;
}
public void setCount(int count) {
this.count = count;
}


public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public Date getDate() {
return date;
}
public void setDate(Date date) {
this.date = date;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}



}

UserTest:
import java.util.ArrayList;
import java.util.Date;
import java.util.List;


import org.hibernate.Session;
import org.hibernate.Transaction;
import org.junit.Test;


import pojo.User;
import hibernate.factory.HibernateSessionFactory;


public class UserTest {
@SuppressWarnings("resource")
@Test
public void save()throws Exception{
Session session=HibernateSessionFactory.getSessionFactory().openSession();
Transaction tx=session.beginTransaction();
User user=new User();
user.setUsername("cheng");
user.setPassword("lin3");
user.setDate(new Date());
user.setAddress("江门3");
for(int i=0;i<10;i++){
user.getClassmates().add("同学>>"+i);
}
user.getScores().put("语文", 100.0f);
user.getScores().put("英语",150.0f);
user.getScores().put("数学", 100.0f);
session.save(user);
tx.commit();
session.close();
}
@Test
public void find()throws Exception{
Session session=HibernateSessionFactory.getSessionFactory().openSession();
Transaction tx=session.beginTransaction();
User u=(User)session.get(User.class,2);
System.out.println(u.getAddress());
System.out.println(u.getCount());
System.out.println(u.getDate());
tx.commit();
session.close();
}


}




import java.util.ArrayList;
import java.util.Date;
import java.util.List;


import org.hibernate.Session;
import org.hibernate.Transaction;
import org.junit.Test;


import pojo.User;
import hibernate.factory.HibernateSessionFactory;


public class UserTest {
@SuppressWarnings("resource")
@Test
public void save()throws Exception{
Session session=HibernateSessionFactory.getSessionFactory().openSession();
Transaction tx=session.beginTransaction();
User user=new User();
user.setUsername("cheng");
user.setPassword("lin3");
user.setDate(new Date());
user.setAddress("江门3");
for(int i=0;i<10;i++){
user.getClassmates().add("同学>>"+i);
}
user.getScores().put("语文", 100.0f);
user.getScores().put("英语",150.0f);
user.getScores().put("数学", 100.0f);
session.save(user);
tx.commit();
session.close();
}
@Test
public void find()throws Exception{
Session session=HibernateSessionFactory.getSessionFactory().openSession();
Transaction tx=session.beginTransaction();
User u=(User)session.get(User.class,2);
System.out.println(u.getAddress());
System.out.println(u.getCount());
System.out.println(u.getDate());
tx.commit();
session.close();
}


}
应用@Test 单元调试,方便快捷。

数据库脚本:
create databases hibernate;


成功运行后,控制台会生成一大堆数据库代码。
会生成三个表。
祝大家性福生活愉快。






你可能感兴趣的:(hibernate注解)