首先介绍一下hibernate:hibernate对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。 Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端程序使用,也可以在Servlet/JSP的Web应用中使用,最具革命意义的是,Hibernate可以在应用EJB的J2EE架构中取代CMP,完成数据持久化的重任。(来自百度百科)
step1,创建数据库,该步骤也可以通过java的建表工具类来执行,不过需要先写好实体类和相关的映射
SchemaExport export=new SchemaExport(configuration);
export.create(true, true);
step2,导入所需要的jar包。
step3,配置hibernate.cfg.xml
<!-- 打印该拼装后的sql语句,方便调试 -->
<property name="hibernate.show_sql">true</property>
step4,利用Hibernate的第三方工具或Eclipse的有关插件从数据库中创建出相应的实体对象及其ORM映射文件。xxx.hbm.xml
step5,创建Hibernate的SessionFactory类。
step6,通过SessionFactory创建Session实例。
step7,通过创建的Session实例进行持久化对象的管理。
step8,通过创建的Transaction实例进行事务管理。
step9,通过创建的Query或Criteria实例实现数据库的查询。
我写的第一个hibernate程序:
一:
public class User {
private Integer id;
private String loginName;
private String password;
private String name;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getLoginName() {
return loginName;
}
public void setLoginName(String loginName) {
this.loginName = loginName;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
二:User.hbm.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="com.pojo.User">
<class name="User" table="e_user" lazy="true">
<id name="id">
<generator class="native"></generator>
</id>
<property name="loginName"></property>
<property name="password"></property>
<property name="name"></property>
</class>
</hibernate-mapping>
三:Hibernate.Utils
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
public class HibernateUtils {
private static Configuration conf;
private static SessionFactory factory;
static{
//conf对象只要加载一次就好,
//如果放入到openSession中会影响效率
conf=new Configuration();
conf.configure();
factory=conf.buildSessionFactory();
}
public static Session openSession(){
return factory.openSession();
}
}
四:完成了增删改查功能
import java.io.File;
import java.util.List;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import org.junit.Test;
import com.pojo.User.User;
import com.pojo.Util.HibernateUtils;
public class TestHibernate {
public void test() {
User user = new User();
user.setLoginName("nihao");
user.setName("xiaoe");
user.setPassword("900529");
// 调用hibernate的api,用于装载hibernate
Configuration conf = new Configuration();
// 类路径中装载默认的配置文件hibernate.cfg.xml
conf.configure();
// 创建装载的指定文件
// conf.configure(new File("abc.xml"));
// 创建SessionFactory
SessionFactory factory = conf.buildSessionFactory();
Session session = factory.openSession();
// 或得事务
Transaction tx = session.getTransaction();
// 开启事务
tx.begin();
session.save(user);
tx.commit();
session.close();
}
public void tst2(){
Session session=null;
try{
session = HibernateUtils.openSession();
//emp empp = (emp) session.get(emp.class, 1);
//System.out.println(empp.getEmpno() + "," + empp.getBonus() + ","
User user=new User();
user.setId(1);
// 开启事务,完成了删除功能
Transaction tx=session.beginTransaction();
session.delete(user);
tx.commit();
session.close();
}catch(Exception e){
e.printStackTrace();
}
}
public void tst3(){
Session session=null;
try{
//完成了修改功能
session=HibernateUtils.openSession();
User user=new User();
user.setId(2);
user.setLoginName("122");
user.setName("taotao");
user.setPassword("9005296666");
Transaction tx=session.beginTransaction();
session.saveOrUpdate(user);
tx.commit();
session.close();
}catch(Exception e){
e.printStackTrace();
}
}
@Test
public void select(){
Session session=null;
try{
//select
session=HibernateUtils.openSession();
//User user=(User)session.get(User.class, 2);
//System.out.println(user.getLoginName()+","+user.getPassword());
//HQL---Hibernate 提供的面向对象的查询语句
Query query=session.createQuery("from User");
List<User> userList=query.list();
for(User user:userList){
System.out.println(user.getId()+","
+user.getName()+","
+user.getLoginName()+","
+user.getPassword());
}
}catch(Exception e){
e.printStackTrace();
}
}
}