得闲没事做,就写下博客,消磨下时间,下面介绍下 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;
成功运行后,控制台会生成一大堆数据库代码。
会生成三个表。
祝大家性福生活愉快。