crud

DAO层接口

package app.bookstore.model.dao;

import app.bookstore.model.entity.Book;

public class BookDaoHibernateImpl extends EntityDaoHibernateSupport<Book> {
	public BookDaoHibernateImpl() {
		super();
	}
}
package app.bookstore.model.dao;

import app.bookstore.model.entity.Category;

public class CategoryDaoHibernateImpl extends
		EntityDaoHibernateSupport<Category> {

	public CategoryDaoHibernateImpl(){
		super();
	}
}
package app.bookstore.model.dao;

import java.util.List;

public interface EntityDao<TEntity> {

	/**
	 * @param id The primary Id of the entity
	 * @return the entity identified by the Id
	 */
	TEntity get(long id);
	
	/**
	 * get single entity by specified property
	 * @param propertyName The name of the property
	 * @param propertyValue The value of the property
	 * @return  the entity specialized by the property
	 */
	TEntity getSingle(String propertyName, Object propertyValue);
	
	/**
	 * save the entity
	 * @param entity The entity to be saved.
	 */
	void save(TEntity entity);
	
	/**
	 * delete an entity with the primary key id
	 * @param id The primary key id of the entity to be deleted.
	 */
	void delete(long id);
	
	/**
	 * delete the entity
	 * @param entity the entity to be deleted.
	 */
	void delete(TEntity entity);
	
	/**
	 * find all the entity from DAO
	 * @return  the List of entities found
	 */
	List<TEntity> findAll();
	
	/**
	 * find entities with the specified property
	 * @param propertyName The name of the property
	 * @param propertyValue The value of the property
	 * @return the List of entities specialized by the property
	 */
	List<TEntity> findBy(String propertyName, Object propertyValue);
	
	
}
package app.bookstore.model.dao;

import java.lang.reflect.ParameterizedType;
import java.lang.reflect.Type;
import java.util.List;

import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.SessionFactory;

public abstract class EntityDaoHibernateSupport<TEntity> implements EntityDao<TEntity> {

	private SessionFactory sf;	
	private Class<TEntity> entityClass;
	
	public void setSessionFactory(SessionFactory sf) {
		this.sf = sf;
	}
	
	protected Session getSession() {
		return sf.openSession();
	}
	
	@SuppressWarnings("unchecked")
	public EntityDaoHibernateSupport() {		
		Class<?> c = this.getClass();
		Type t = c.getGenericSuperclass();
		if (t instanceof ParameterizedType) {
			Type[] types = ((ParameterizedType)t).getActualTypeArguments();
			entityClass = (Class<TEntity>)types[0];
		}
	}

	@SuppressWarnings("unchecked")
	@Override
	public TEntity get(long id) {
		Session session = this.getSession();
		session.beginTransaction();
		TEntity entity = (TEntity)session.get(entityClass, id);
		session.getTransaction().commit();
		session.close();
		return entity;
	}

	@Override
	public TEntity getSingle(String propertyName, Object propertyValue) {
		List<TEntity> entities = findBy(propertyName, propertyValue);
		if (entities != null && entities.size() > 0) {
			return entities.get(0);
		}
		return null;
	}

	@Override
	public void save(TEntity entity) {
		Session session = this.getSession();
		session.beginTransaction();
		session.saveOrUpdate(entity);
		session.getTransaction().commit();
		session.close();
	}

	@Override
	public void delete(long id) {
		TEntity entity = get(id);
		delete(entity);
	}

	@Override
	public void delete(TEntity entity) {
		Session session = this.getSession();
		session.beginTransaction();
		session.delete(entity);
		session.getTransaction().commit();
		session.close();
	}

	@SuppressWarnings("unchecked")
	@Override
	public List<TEntity> findAll() {
		List<TEntity> entities = this.getSession().createQuery("from " + entityClass.getSimpleName()).list();
		return entities;
	}

	@SuppressWarnings("unchecked")
	@Override
	public List<TEntity> findBy(String propertyName, Object propertyValue) {
		String queryString = "from " + entityClass.getSimpleName() + " e ";
		queryString += "where e." + propertyName + "=:propertyValue";
		Query query = this.getSession().createQuery(queryString);
		List<TEntity> entities = query.setParameter("propertyValue", propertyValue).list();
		return entities;
	}
}
package app.bookstore.model.dao;

import app.bookstore.model.entity.Order;

public class OrderDaoHibernateImpl extends EntityDaoHibernateSupport<Order> {

	public OrderDaoHibernateImpl() {
		super();
	}
}
package app.bookstore.model.dao;

import app.bookstore.model.entity.User;

public class UserDaoHibernateImpl extends EntityDaoHibernateSupport<User> {

	public UserDaoHibernateImpl() {
		super();
	}
}

接口实现

package app.bookstore.model.service;

import java.util.List;

import app.bookstore.model.entity.Category;

public class CategoryServiceImpl extends ServiceSupport<Category> implements
		CategoryService {

	@Override
	public List<Category> getAllCategories() {
		return this.getDao().findAll();
	}

}

package app.bookstore.model.service;

import app.bookstore.model.entity.Order;

public class OrderServiceImpl extends ServiceSupport<Order> implements
		OrderService {

	@Override
	public void saveOrder(Order order) {
		this.getDao().save(order);

	}

}

package app.bookstore.model.service;

import app.bookstore.model.dao.EntityDao;
import app.bookstore.model.entity.Book;
import app.bookstore.model.entity.Category;
import app.bookstore.model.entity.Order;
import app.bookstore.model.entity.User;
import app.bookstore.util.DateTimeHelper;

public class SystemServiceImpl extends ServiceSupport<User> implements
		SystemService {
	
	private EntityDao<Book> bookDao;
	private EntityDao<Category> categoryDao;
	private EntityDao<Order> orderDao;
	
	private String feedCode;
	
	public void setFeedCode(String code){
		this.feedCode = code;
	}
	
	public EntityDao<Book> getBookDao() {
		return bookDao;
	}

	public void setBookDao(EntityDao<Book> bookDao) {
		this.bookDao = bookDao;
	}

	public EntityDao<Category> getCategoryDao() {
		return categoryDao;
	}

	public void setCategoryDao(EntityDao<Category> categoryDao) {
		this.categoryDao = categoryDao;
	}

	public EntityDao<Order> getOrderDao() {
		return orderDao;
	}

	public void setOrderDao(EntityDao<Order> orderDao) {
		this.orderDao = orderDao;
	}

	@Override
	public void feedSampleData(String feedCode) throws Exception{
		System.out.println(this.feedCode);
		if (feedCode.equals(this.feedCode))
		{
			addUsers();
			addCategoryAndBooks();
		}
		else 
		{
			throw new Exception("数据填充码不正确");
		}
	}
	
	private void addUsers()
	{
		//创建三个用户
		User user1 = new User("sa@bookstore.com","系统管理员","123456",'M',DateTimeHelper.getDateTimeFrom("1988-12-12"));
		User user2 = new User("zhangsan@bookstore.com","张三","123456",'M',DateTimeHelper.getDateTimeFrom("1982-02-14"));
		User user3 = new User("test@bookstore.com","测试用户","1234",'F',DateTimeHelper.getDateTimeFrom("1991-10-1-"));
		//保存用户
		this.getDao().save(user1);
		this.getDao().save(user2);
		this.getDao().save(user3);
		
	}
	
	private void addCategoryAndBooks()
	{
		//创建图书分类
		Category c1 = new Category("计算机","计算机专业图书");		
		Category c2 = new Category("少儿","关于少儿教育方面的图书");
		Category c3 = new Category("生活文化","关于生活与文化的图书");
		//保存图书分类
		this.getCategoryDao().save(c1);
		this.getCategoryDao().save(c2);
		this.getCategoryDao().save(c3);
		
		//创建"计算机"类图书
		Book book1 = new Book("Java程序设计", 29.5f, "book.png");
		book1.setCategory(c1);
		Book book2 = new Book("Java编程思想", 60.0f, "book.png");
		book2.setCategory(c1);
		Book book3 = new Book("Java设计模式", 45.0f, "book.png");
		book3.setCategory(c1);
		Book book4 = new Book("iOS应用开发", 66.0f, "book.png");
		book4.setCategory(c1);
		Book book5 = new Book("Head First PMP", 80.0f, "book.png");
		book5.setCategory(c1);
		
		//创建“少儿"类图书
		Book book6 = new Book("安徒生童话集", 29.5f, "book.png");
		book6.setCategory(c2);
		Book book7 = new Book("十四只老鼠去春游", 12.0f, "book.png");
		book7.setCategory(c2);
		Book book8 = new Book("Canimals 贴纸书", 15.0f, "book.png");
		book8.setCategory(c2);
		Book book9 = new Book("唐诗三百首", 30.0f, "book.png");
		book9.setCategory(c2);
		
		//创建”生活文化“类图书
		Book book10 = new Book("论语心得", 32.0f, "book.png");
		book10.setCategory(c3);
		Book book11 = new Book("家常菜100道", 60.0f, "book.png");
		book11.setCategory(c3);
		Book book12 = new Book("有病不能乱求医", 35.0f, "book.png");
		book12.setCategory(c3);
		
		//保存图书
		this.getBookDao().save(book1);
		this.getBookDao().save(book2);
		this.getBookDao().save(book3);
		this.getBookDao().save(book4);
		this.getBookDao().save(book5);
		this.getBookDao().save(book6);
		this.getBookDao().save(book7);
		this.getBookDao().save(book8);
		this.getBookDao().save(book9);
		this.getBookDao().save(book10);
		this.getBookDao().save(book11);
		this.getBookDao().save(book12);
		
	}
	
}

package app.bookstore.model.service;

import java.util.List;

import app.bookstore.model.entity.User;

public class UserServiceImpl extends ServiceSupport<User> implements
		UserService {

	@Override
	public void saveUser(User user) {
		this.getDao().save(user);	
	}

	@Override
	public User verifyUser(String loginId, String password) {
		List<User> users = this.getDao().findBy("loginId", loginId);
		for(User user: users){
			if (user.getPassword().equals(password)){
				return user;
			}
		}
		return null;
	}

}

package app.bookstore.model.service;

import java.util.ArrayList;
import java.util.List;

import app.bookstore.model.entity.Book;

public class BookServiceImpl extends ServiceSupport<Book> implements
		BookService {

	@Override
	public Book getBook(long id) {
		return this.getDao().get(id);
	}

	@Override
	public List<Book> getBooksByCategoryId(long id) {
		return this.getDao().findBy("category.id", id);
	}

	@Override
	public List<Book> getAllBooks() {
		return this.getDao().findAll();
	}

	@Override
	public List<Book> searchBookFor(String keyword) {
		List<Book> resultBooks = new ArrayList<Book>();
		List<Book> allBooks = this.getAllBooks();
		for (Book book : allBooks){
			if (book.getName().contains(keyword) || 
				book.getCategory().getName().contains(keyword) || 
				book.getCategory().getDescription().contains(keyword)) {
				resultBooks.add(book);
			}
		}
		return resultBooks;
	}

}
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">
<!-- Generated 2013-11-11 23:19:21 by Hibernate Tools 3.4.0.CR1 -->
<hibernate-mapping package="app.bookstore.model.entity">
 <class name="Book" table="book">
  <id name="id" type="long">
   <generator class="native"/>
  </id>
  <property column="creation_date" generated="never" lazy="false"
   name="creationDate" not-null="true"/>
  <property generated="never" lazy="false" length="100" name="name" not-null="true"/>
  <property generated="never" lazy="false" name="price"/>
  <property column="cover_image_url" generated="never" lazy="false"
   length="128" name="coverImageFile"/>
  <many-to-one class="Category" column="category_id" name="category"/>
 </class>
</hibernate-mapping>

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
                                   "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!-- Generated 2013-11-11 23:19:21 by Hibernate Tools 3.4.0.CR1 -->
<hibernate-mapping package="app.bookstore.model.entity">
 <class name="Category" table="category">
  <id name="id" type="long">
   <generator class="native"/>
  </id>
  <property column="creation_date" generated="never" lazy="false"
   name="creationDate" not-null="true"/>
  <property generated="never" lazy="false" length="50" name="name" not-null="true"/>
  <property generated="never" lazy="false" length="120" name="description"/>
 </class>
</hibernate-mapping>

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
                                   "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!-- Generated 2013-11-11 23:19:21 by Hibernate Tools 3.4.0.CR1 -->
<hibernate-mapping package="app.bookstore.model.entity">
 <class name="Order" table="orders">
  <id name="id" type="long">
   <generator class="native"/>
  </id>
  <property column="creation_date" generated="never" lazy="false"
   name="creationDate" not-null="true"/>
  <property column="total_price" name="totalPrice"/>
  <set cascade="all" inverse="true" name="orderItems" sort="unsorted" table="order_item">
   <key column="order_id"/>
   <one-to-many class="OrderItem"/>
  </set>
  <many-to-one class="User" column="user_id" name="user" not-null="true"/>
 </class>
</hibernate-mapping>

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
                                   "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!-- Generated 2013-11-11 23:19:21 by Hibernate Tools 3.4.0.CR1 -->
<hibernate-mapping package="app.bookstore.model.entity">
 <class name="OrderItem" table="order_item">
  <id name="id" type="long">
   <generator class="native"/>
  </id>
  <property column="creation_date" generated="never" lazy="false"
   name="creationDate" not-null="true"/>
  <property name="quantity" generated="never" lazy="false" not-null="true"/>
  <many-to-one class="Book" column="book_id" name="book" not-null="true"/>
  <many-to-one cascade="all" class="Order" column="order_id"
   name="order" not-null="true"/>
 </class>
</hibernate-mapping>

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
                                   "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!-- Generated 2013-11-11 23:19:21 by Hibernate Tools 3.4.0.CR1 -->
<hibernate-mapping package="app.bookstore.model.entity">
 <class name="User">
  <id name="id" type="long">
   <generator class="native"/>
  </id>
  <property column="creation_date" generated="never" lazy="false"
   name="creationDate" not-null="true"/>
  <property generated="never" lazy="false" length="50" name="name" not-null="true"/>
  <property generated="never" lazy="false" length="64" name="password" not-null="true"/>
  <property generated="never" lazy="false" length="2" name="sex" not-null="true"/>
  <property generated="never" lazy="false" name="birthday" not-null="true"/>
  <property column="login_id" generated="never" lazy="false"
   length="128" name="loginId" not-null="true"/>
  <property column="login_times" generated="never" lazy="false"
   name="loginTimes" not-null="true"/>
  <property column="last_login_date" generated="never" lazy="false"
   name="lastLoginDate" not-null="true"/>
  <set inverse="true" name="orders" sort="unsorted" table="orders">
   <key column="user_id"/>
   <one-to-many class="Order"/>
  </set>
 </class>
</hibernate-mapping>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值