Hibernate开发步骤
- 创建持久化类(Book)
- 创建对象--关系映射文件(Book.hbm.xml)
- 创建Hibernate配置文件(Book.hbm.xml)
- 创建接口(BookDao)
- 创建实现接口类(BookImpl)
整个web结构如下
创建持久化类Book
public class Book implements Serializable{
private static final long serialVersionUID = 1L;
private String bookid;
private String bookname;
private double bookprice;
private String bookimg;
//get 和 set方法省略
}
数据库表结构如下
创建对象--关系映射文件(Book.hbm.xml)
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<!-- name="要映射的对象类名"
table="此对象对应的数据库里面的表的名字",如果不写,自动找与类名相同的表名
hibernate里面如果name与column相同,可以省略column,但推荐写上-->
<class name="com.lanou.bookstore.domain.Book" table="BOOKINFO">
<id name="bookid" column="BOOKID" type="java.lang.String" />
<property name="bookname" column="BOOKNAME" type="java.lang.String"/>
<property name="bookprice"/>
<property name="bookimg" column="BOOKIMG" type="java.lang.String"/>
</class>
</hibernate-mapping>
创建Hibernate配置文件(Book.hbm.xml)
导入Jar包
<?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="dialect">org.hibernate.dialect.MySQLDialect</property>
<property name="connection.driver_class">com.mysql.jdbc.Driver</property>
<!-- JDBC URL -->
<property name="connection.url">jdbc:mysql://localhost/bookdb?characterEncoding=utf-8</property>
<!-- 数据库用户名 -->
<property name="connection.username">root</property>
<!-- 数据库密码 -->
<property name="connection.password">123</property>
<!-- SQL dialect 数据库方言 -->
<property name="dialect">org.hibernate.dialect.MySQLDialect</property>
<!-- Echo all executed SQL to stdout -->
<property name="show_sql">true</property>
<!-- Drop and re-create the database schema on startup,create无条件创建表/update没有表的时候创建 -->
<!-- <property name="hbm2ddl.auto">create</property> -->
<mapping resource="com/lanou/bookstore/config/Book.hbm.xml" />
</session-factory>
</hibernate-configuration>
创建接口(BookDao)
package com.lanou.bookstore.dao;
import java.util.List;
import com.lanou.bookstore.domain.Book;
public interface BookDao {
//添加
public void saveBook(Book book);
//修改
public void updateBook(Book book);
//删除
public void deteteBook(Book book);
//查询所有
public List<Book> getBooks();
}
创建得到session 的工具类 HibernateUtil
package com.lanou.bookstore.util;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
public class HibernateUtil {
private static Configuration configuration = null;
private static SessionFactory sessionFactory = null;
private static Session session = null;
static {
configuration = new Configuration().configure("com/lanou/bookstore/config/hibernate.cfg.xml");
}
//构建工厂
public static SessionFactory getSessionFactory() {
if(sessionFactory == null) {
sessionFactory = configuration.buildSessionFactory();
}
return sessionFactory;
}
//得到session
public static Session getSession() {
sessionFactory = getSessionFactory();
if(session==null) {
session = sessionFactory.openSession();
}
return session;
}
//
private static HibernateUtil hibernateUtil = null;
//私有化构造方法,自己能自己new自己
private HibernateUtil() {
}
//自己实例化
public static HibernateUtil getInstance() {
if(hibernateUtil==null) {
hibernateUtil = new HibernateUtil();
}
return hibernateUtil;
}
}
创建实现接口类(BookImpl)
package com.lanou.bookstore.impl;
import java.util.List;
import org.hibernate.Session;
import com.lanou.bookstore.dao.BookDao;
import com.lanou.bookstore.domain.Book;
import com.lanou.bookstore.util.HibernateUtil;
public class BookImpl implements BookDao{
HibernateUtil hibernateUtil = HibernateUtil.getInstance();
Session session = hibernateUtil.getSession();
@Override
public void saveBook(Book book) {
session.save(book);
session.beginTransaction().commit();
}
@Override
public void updateBook(Book book) {
session.update(book);
session.beginTransaction().commit();
}
@Override
public void deteteBook(Book book) {
session.delete(book);
session.beginTransaction().commit();
}
@Override
public List<Book> getBooks() {
return null;
}
}
测试类 TestAB
package com.lanou.bookstore.test;
import com.lanou.bookstore.dao.BookDao;
import com.lanou.bookstore.domain.Book;
import com.lanou.bookstore.impl.BookImpl;
import com.lanou.bookstore.util.HibernateUtil;
public class TestAB {
public static void main(String[] args) {
Book book = new Book();
book.setBookid("33333");
book.setBookimg("33333");
book.setBookname("3333");
book.setBookprice(33.33);
BookDao bookDao = new BookImpl();
bookDao.saveBook(book);
}
}
运行结果: