Spring中Hibernate如何使用

这期内容当中小编将会给大家带来有关Spring中Hibernate如何使用,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。

成都创新互联是一家集网站建设,船营企业网站建设,船营品牌网站建设,网站定制,船营网站建设报价,网络营销,网络优化,船营网站推广为一体的创新建站企业,帮助传统企业提升企业形象加强企业竞争力。可充分满足这一群体相比中小企业更为丰富、高端、多元的互联网需求。同时我们时刻保持专业、时尚、前沿,时刻以成就客户成长自我,坚持不断学习、思考、沉淀、净化自己,让我们为更多的企业打造出实用型网站。

一 web配置

     org.springframework.web.context.ContextLoaderListener            struts2    org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter        struts2    /*  

二 applicationContext.xml

                                     org.crazyit.booksys.domain.Book                                                  org.hibernate.dialect.MySQL5InnoDBDialect                update        true        true                                                          

三 Struts配置

                         listBooks            /WEB-INF/content/bookForm.jsp              /WEB-INF/content/listBooks.jsp              listBooks                  /WEB-INF/content/{1}.jsp      

四 视图

1 bookForm.jsp

<%@ page contentType="text/html; charset=GBK" language="java" errorPage="" %><%@taglib prefix="s" uri="/struts-tags"%>  添加图书

添加图书

                         

2 listBooks.jsp

<%@ page contentType="text/html; charset=GBK" language="java" errorPage="" %><%@taglib prefix="s" uri="/struts-tags"%>  全部图书

全部图书

                                   
删除

五 domain

package org.crazyit.booksys.domain;import javax.persistence.*;@Entity@Table(name="book_inf")public class Book{  @Id @Column(name="book_id")  @GeneratedValue(strategy=GenerationType.IDENTITY)  private Integer id;  @Column(name="book_name")  private String name;  private double price;  private String author;  public Integer getId()  {    return id;  }  public void setId(Integer id)  {    this.id = id;  }  public String getName()  {    return name;  }  public void setName(String name)  {    this.name = name;  }  public double getPrice()  {    return price;  }  public void setPrice(double price)  {    this.price = price;  }  public String getAuthor()  {    return author;  }  public void setAuthor(String author)  {    this.author = author;  }}

六 action

package org.crazyit.booksys.action;import java.util.List;import org.crazyit.booksys.domain.Book;import org.crazyit.booksys.service.BookService;import com.opensymphony.xwork2.ActionSupport;public class BookAction extends ActionSupport{  private BookService bookService;  // 依赖注入BookService组件必须的setter方法。  // 该方法的方法名要与BookService的配置id对应  public void setBookService(BookService bookService)  {    this.bookService = bookService;  }  private Book book;  private List books;  private int id;  public Book getBook()  {    return book;  }  public void setBook(Book book)  {    this.book = book;  }  public List getBooks()  {    return books;  }  public void setBooks(List books)  {    this.books = books;  }  public int getId()  {    return id;  }  public void setId(int id)  {    this.id = id;  }  // 处理添加图书的add()方法  public String add()  {    // 调用业务逻辑组件的addBook()方法来处理用户请求    int result = bookService.addBook(book);    if(result > 0)    {      addActionMessage("恭喜您,图书添加成功!");      return SUCCESS;    }    addActionError("图书添加失败,请重新输入!");    return ERROR;  }  public String list()  {    setBooks(bookService.getAllBooks());    return SUCCESS;  }  public String delete()  {    bookService.deleteBook(id);    return SUCCESS;  }}

七 service

1 BookService.java

package org.crazyit.booksys.service;import java.util.List;import org.crazyit.booksys.domain.Book;public interface BookService{  // 添加图书  int addBook(Book book);  List getAllBooks();  void deleteBook(int id);}

2 BookServiceImpl.java

package org.crazyit.booksys.service.impl;import java.util.List;import org.crazyit.booksys.dao.BookDao;import org.crazyit.booksys.domain.Book;import org.crazyit.booksys.service.BookService;public class BookServiceImpl implements BookService{  private BookDao bookDao;  public void setBookDao(BookDao bookDao)  {    this.bookDao = bookDao;  }  @Override  public int addBook(Book book)  {    return (Integer) bookDao.save(book);  }  @Override  public List getAllBooks()  {    return bookDao.findAll(Book.class);  }  @Override  public void deleteBook(int id)  {    bookDao.delete(Book.class, id);  }}

八 dao

BaseDao.java

package org.crazyit.common.dao;import java.util.List;import java.io.Serializable;public interface BaseDao{  // 根据ID加载实体  T get(Class entityClazz , Serializable id);  // 保存实体  Serializable save(T entity);  // 更新实体  void update(T entity);  // 删除实体  void delete(T entity);  // 根据ID删除实体  void delete(Class entityClazz , Serializable id);  // 获取所有实体  List findAll(Class entityClazz);  // 获取实体总数  long findCount(Class entityClazz);}

BaseDaoHibernate3.java

package org.crazyit.common.dao.impl;import java.io.Serializable;import java.util.List;import org.crazyit.common.dao.BaseDao;import org.hibernate.*;import org.springframework.orm.hibernate4.support.HibernateDaoSupport;import org.springframework.orm.hibernate4.HibernateCallback;public class BaseDaoHibernate3 extends HibernateDaoSupport  implements BaseDao{  // 根据ID加载实体  public T get(Class entityClazz, Serializable id)  {    return getHibernateTemplate().get(entityClazz, id);  }  // 保存实体  public Serializable save(T entity)  {    return getHibernateTemplate().save(entity);  }  // 更新实体  public void update(T entity)  {    getHibernateTemplate().saveOrUpdate(entity);  }  // 删除实体  public void delete(T entity)  {    getHibernateTemplate().delete(entity);  }  // 根据ID删除实体  public void delete(Class entityClazz, Serializable id)  {    delete(get(entityClazz , id));  }  @Override  @SuppressWarnings("unchecked")  public List findAll(Class entityClazz)  {    return (List)getHibernateTemplate().find("select en from "      + entityClazz.getSimpleName() + " en");  }  @Override  @SuppressWarnings("unchecked")  public long findCount(Class entityClazz)  {    List list = (List)getHibernateTemplate().find(      "select count(*) from " + entityClazz.getSimpleName() + " en");    return list.get(0);  }  /**   * 使用hql 语句进行分页查询操作   * @param hql 需要查询的hql语句   * @param pageNo 查询第pageNo页的记录   * @param pageSize 每页需要显示的记录数   * @return 当前页的所有记录   */  @SuppressWarnings("unchecked")  protected List findByPage(final String hql,    final int pageNo, final int pageSize)  {    // 通过一个HibernateCallback对象来执行查询    List list = getHibernateTemplate()      .execute(new HibernateCallback>()    {      // 实现HibernateCallback接口必须实现的方法      public List doInHibernate(Session session)      {        // 执行Hibernate分页查询        List result = session.createQuery(hql)          .setFirstResult((pageNo - 1) * pageSize)          .setMaxResults(pageSize)          .list();        return result;      }    });    return list;  }  /**   * 使用hql 语句进行分页查询操作   * @param hql 需要查询的hql语句   * @param pageNo 查询第pageNo页的记录   * @param pageSize 每页需要显示的记录数   * @param params 如果hql带占位符参数,params用于传入占位符参数   * @return 当前页的所有记录   */  @SuppressWarnings("unchecked")  protected List findByPage(final String hql , final int pageNo,    final int pageSize , final Object... params)  {    // 通过一个HibernateCallback对象来执行查询    List list = getHibernateTemplate()      .execute(new HibernateCallback>()    {      // 实现HibernateCallback接口必须实现的方法      public List doInHibernate(Session session)      {        // 执行Hibernate分页查询        Query query = session.createQuery(hql);        // 为包含占位符的HQL语句设置参数        for(int i = 0 , len = params.length ; i < len ; i++)        {          query.setParameter(i + "" , params[i]);        }        List result = query.setFirstResult((pageNo - 1) * pageSize)          .setMaxResults(pageSize)          .list();        return result;      }    });    return list;  }}

BaseDaoHibernate4.java

package org.crazyit.common.dao.impl;import org.hibernate.*;import java.util.List;import java.io.Serializable;import org.crazyit.common.dao.*;public class BaseDaoHibernate4 implements BaseDao{  // DAO组件进行持久化操作底层依赖的SessionFactory组件  private SessionFactory sessionFactory;  // 依赖注入SessionFactory所需的setter方法  public void setSessionFactory(SessionFactory sessionFactory)  {    this.sessionFactory = sessionFactory;  }  public SessionFactory getSessionFactory()  {    return this.sessionFactory;  }  // 根据ID加载实体  @SuppressWarnings("unchecked")  public T get(Class entityClazz , Serializable id)  {    return (T)getSessionFactory().getCurrentSession()      .get(entityClazz , id);  }  // 保存实体  public Serializable save(T entity)  {    return getSessionFactory().getCurrentSession()      .save(entity);  }  // 更新实体  public void update(T entity)  {    getSessionFactory().getCurrentSession().saveOrUpdate(entity);  }  // 删除实体  public void delete(T entity)  {    getSessionFactory().getCurrentSession().delete(entity);  }  // 根据ID删除实体  public void delete(Class entityClazz , Serializable id)  {    getSessionFactory().getCurrentSession()      .createQuery("delete " + entityClazz.getSimpleName()        + " en where en.id = ?0")      .setParameter("0" , id)      .executeUpdate();  }  // 获取所有实体  public List findAll(Class entityClazz)  {    return find("select en from "      + entityClazz.getSimpleName() + " en");  }  // 获取实体总数  public long findCount(Class entityClazz)  {    List l = find("select count(*) from "      + entityClazz.getSimpleName());    // 返回查询得到的实体总数    if (l != null && l.size() == 1 )    {      return (Long)l.get(0);    }    return 0;  }  // 根据HQL语句查询实体  @SuppressWarnings("unchecked")  protected List find(String hql)  {    return (List)getSessionFactory().getCurrentSession()      .createQuery(hql)      .list();  }  // 根据带占位符参数HQL语句查询实体  @SuppressWarnings("unchecked")  protected List find(String hql , Object... params)  {    // 创建查询    Query query = getSessionFactory().getCurrentSession()      .createQuery(hql);    // 为包含占位符的HQL语句设置参数    for(int i = 0 , len = params.length ; i < len ; i++)    {      query.setParameter(i + "" , params[i]);    }    return (List)query.list();  }  /**   * 使用hql 语句进行分页查询操作   * @param hql 需要查询的hql语句   * @param pageNo 查询第pageNo页的记录   * @param pageSize 每页需要显示的记录数   * @return 当前页的所有记录   */  @SuppressWarnings("unchecked")  protected List findByPage(String hql,     int pageNo, int pageSize)  {    // 创建查询    return getSessionFactory().getCurrentSession()      .createQuery(hql)      // 执行分页      .setFirstResult((pageNo - 1) * pageSize)      .setMaxResults(pageSize)      .list();  }  /**   * 使用hql 语句进行分页查询操作   * @param hql 需要查询的hql语句   * @param params 如果hql带占位符参数,params用于传入占位符参数   * @param pageNo 查询第pageNo页的记录   * @param pageSize 每页需要显示的记录数   * @return 当前页的所有记录   */  @SuppressWarnings("unchecked")  protected List findByPage(String hql , int pageNo, int pageSize    , Object... params)  {    // 创建查询    Query query = getSessionFactory().getCurrentSession()      .createQuery(hql);    // 为包含占位符的HQL语句设置参数    for(int i = 0 , len = params.length ; i < len ; i++)    {      query.setParameter(i + "" , params[i]);    }    // 执行分页,并返回查询结果    return query.setFirstResult((pageNo - 1) * pageSize)      .setMaxResults(pageSize)      .list();  }}

BookDao.java

package org.crazyit.booksys.dao;import java.util.List;import org.crazyit.booksys.domain.Book;import org.crazyit.common.dao.BaseDao;public interface BookDao extends BaseDao{}

BookDaoHibernate4.java

package org.crazyit.booksys.dao.impl;import java.util.List;import org.crazyit.booksys.dao.BookDao;import org.crazyit.booksys.domain.Book;import org.crazyit.common.dao.impl.BaseDaoHibernate3;import org.crazyit.common.dao.impl.BaseDaoHibernate4;public class BookDaoHibernate4 extends BaseDaoHibernate4  implements BookDao{}

上述就是小编为大家分享的Spring中Hibernate如何使用了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注创新互联行业资讯频道。


当前标题:Spring中Hibernate如何使用
网站地址:http://ybzwz.com/article/ppsjdg.html