hibenate --- - 일반 설정 을 통 해 DAO
6746 단어 hibernate
package com.test.dao;
import java.io.Serializable;
import java.util.List;
/**
* dao
* @author Ming
* @date 2017/11/16 12:46
*/
// entity user, id Integer , BaseDao
public interface BaseDaoextends Serializable> {
/**
*
* @param id
* @return
*/
T get(PK id);
/**
*
* @return
*/
List getAll();
/**
*
* @param entity
*/
void save(T entity);
/**
*
* @param id
*/
void delete(PK id);
/**
*
* @param entity
*/
void update(T entity);
/**
* or
* @param entity
*/
void saveOrUpdate(T entity);
/**
*
* @param hql
* @return
*/
Integer getSize(String hql);
}
package com.test.dao.impl;
import com.test.dao.BaseDao;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.springframework.stereotype.Repository;
import javax.annotation.Resource;
import java.io.Serializable;
import java.lang.reflect.ParameterizedType;
import java.lang.reflect.Type;
import java.util.List;
/**
* dao
* @author Ming
* @date 2017/11/16 12:46
*/
@Repository
public class BaseDaoImpl<T, PK extends Serializable> implements BaseDao<T, PK> {
// DAO HibernateDaoSupport , HibernareDaoSupport sessionFactory
// sessionfactory HibernateDaoSupprot sessionfactory, HibernateDaoSupport
@Resource
private SessionFactory sessionFactory;
// Class
private Class entityClass;
public BaseDaoImpl() {
// Class , Class 。
Class clz = getClass();
// Class ( 、 、 void) Type
Type type = clz.getGenericSuperclass();
// instanceof : ? ? getClass == 。
// ParameterizedType , Collection。
if (type instanceof ParameterizedType) {
//
Type[] types = ((ParameterizedType) type).getActualTypeArguments();
entityClass = (Class) types[0];
}
}
/**
* Session
* sessionFactory.getCurrentSession(): 。
* session , session , session。
*
* sessionFactory.openSession(): session, , ,
*
* , DAO Spring hibernate , Spring session ,
* getCurrentSession ()。
*
* @return
*/
public Session getSession() {
return sessionFactory.getCurrentSession();
}
@Override
public T get(PK id) {
return (T) getSession().get(entityClass, id);
}
@Override
public List getAll() {
Query query = getSession().createQuery("from " + entityClass.getName());//from TableName
return (List) query.list();
}
@Override
public void save(T entity) {
getSession().save(entity);
getSession().flush();
}
@Override
public void saveOrUpdate(T entity) {
getSession().saveOrUpdate(entity);
}
/**
* .fiush() , SQL。
* @param entity
*/
@Override
public void delete(PK id) {
T entity = get(id);
getSession().delete(entity);
getSession().flush();
}
@Override
public void update(T entity) {
getSession().update(entity);
getSession().flush();
}
@Override
public Integer getSize(String hql) {
Query query = getSession().createQuery(hql);
return query.list().size();
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
JPA 및 PostgreSQL 텍스트다음은 의 친구들과 논의한 후 오랫동안 초안으로 작성한 블로그 게시물이며 ( ) 주제에 대한 훌륭한 기사를 작성했기 때문에 여기에 작은 테스트를 게시하고 있습니다. JPA 주석 없이 String를 선언합니다. 재현하...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.