首先记录一下基于注解的hibernate.cfg.xml文件的内容吧:
<?xml version='1.0' encoding='utf-8'?> <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"> <hibernate-configuration> <session-factory> <property name="connection.driver_class">com.mysql.jdbc.Driver</property> <property name="connection.url">jdbc:mysql://127.0.0.1:3306/item</property> <property name="connection.username">root</property> <property name="connection.password">123456</property> <property name="dialect">org.hibernate.dialect.MySQLDialect</property> <property name="show_sql">true</property> <property name="format_sql">true</property> <mapping class="cn.bdx.po.User"/> </session-factory> </hibernate-configuration>
这是一个可以说是简单地不能再简单的配置文件了,具体内容在这里先不详细记录了。
pojo类:
package cn.bdx.po;
import javax.persistence.*;
import java.io.Serializable;
/**
* Created by Administrator on 2016/5/23.
*/
@Entity
@Table(name="t_user")
public class User{
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private int id;
private String name;
private int age;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public String toString() {
return "User{" +
"id=" + id +
", name='" + name + '\'' +
", age=" + age +
'}';
}
}
HibernateUtils类的代码:
package cn.bdx.utils;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.boot.registry.StandardServiceRegistryBuilder;
import org.hibernate.cfg.Configuration;
import org.hibernate.service.ServiceRegistry;
/**
* Created by Administrator on 2016/5/23.
*/
public class HibernateUtils {
private static SessionFactory sessionFactory;
static {
Configuration configuration = new Configuration().configure();
ServiceRegistry serviceRegistry = new StandardServiceRegistryBuilder().applySettings(configuration.getProperties()).build();
sessionFactory = configuration.buildSessionFactory(serviceRegistry);
}
public static SessionFactory getSessionFactory() {
return sessionFactory;
}
public static Session getSession() throws Exception {
if (sessionFactory == null) {
throw new Exception("sessionFactory is empty");
}
return sessionFactory.openSession();
}
}
这里面的内容在上一篇中讲解了。
最后就是获取到Session对象进行持久化的操作了,下面是写的一些简单的单表操作的方法,以供以后借鉴吧:
package cn.bdx.dao;
import cn.bdx.po.User;
import cn.bdx.utils.HibernateUtils;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.Transaction;
import org.hibernate.transform.Transformers;
import java.util.List;
/**
* Created by Administrator on 2016/5/23.
*/
public class UserDao {
public void add(User user) throws Exception {
Session session = HibernateUtils.getSession();
Transaction transaction = session.getTransaction();
try {
transaction.begin();
session.persist(user);
transaction.commit();
} catch (Exception e) {
transaction.rollback();
e.printStackTrace();
}
}
public void update(User user) throws Exception{
Session session = HibernateUtils.getSession();
Transaction transaction = session.getTransaction();
try{
transaction.begin();
session.update(user);
transaction.commit();
}catch (Exception e) {
transaction.rollback();
}
}
public void query() throws Exception {
Session session = HibernateUtils.getSession();
Transaction transaction = session.getTransaction();
try {
transaction.begin();
User user = (User) session.get(User.class, 1);
System.out.print(user);
transaction.commit();
} catch (Exception e) {
transaction.rollback();
e.printStackTrace();
}
}
public void queryByHql() throws Exception {
Session session = HibernateUtils.getSession();
Transaction transaction = session.getTransaction();
try {
transaction.begin();
org.hibernate.Query query = session.createQuery("from User");
List<User> userList = query.list();
for(User user:userList) {
System.out.print(user.getName());
}
transaction.commit();
} catch (Exception e) {
transaction.rollback();
}
}
public void queryBySql() throws Exception {
Session session = HibernateUtils.getSession();
Transaction transaction = session.getTransaction();
try{
transaction.begin();
Query query= session.createSQLQuery("SELECT age,name FROM t_user").setResultTransformer(Transformers.aliasToBean(User.class));
List list = query.list();
System.out.println(list);
transaction.commit();
}catch (Exception e) {
transaction.rollback();
}
}
public void delete(User user) throws Exception{
Session session = HibernateUtils.getSession();
Transaction transaction = session.getTransaction();
try{
transaction.begin();
session.delete(user);
transaction.commit();
}catch (Exception e) {
transaction.rollback();
}
}
}