_baserootdao.java
来自「《精通Spring》源代码」· Java 代码 · 共 838 行 · 第 1/2 页
JAVA
838 行
package com.openv.spring.base;
import java.io.Serializable;
import java.math.BigDecimal;
import java.sql.Timestamp;
import java.util.Calendar;
import java.util.Date;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import net.sf.hibernate.Criteria;
import net.sf.hibernate.HibernateException;
import net.sf.hibernate.Query;
import net.sf.hibernate.Session;
import net.sf.hibernate.Transaction;
import net.sf.hibernate.SessionFactory;
import net.sf.hibernate.cfg.Configuration;
import net.sf.hibernate.expression.Expression;
import net.sf.hibernate.expression.Order;
import net.sf.hibernate.type.Type;
/**
* This class has been automatically generated by Hibernate Synchronizer. For
* more information or documentation, visit The Hibernate Synchronizer page at
* http://www.binamics.com/hibernatesync or contact Joe Hudson at
* joe@binamics.com.
*/
public abstract class _BaseRootDAO {
protected static Map sessionFactoryMap = new HashMap();
protected static ThreadLocal threadedSessions = new ThreadLocal();
/**
* Configure the session factory by reading hibernate config file
*/
public static void initialize() throws HibernateException {
initialize((String) null);
}
/**
* Configure the session factory by reading hibernate config file
*
* @param configFileName
* the name of the configuration file
*/
public static void initialize(String configFileName)
throws HibernateException {
if (null == configFileName && sessionFactoryMap.size() > 0)
return;
else if (null != sessionFactoryMap.get(configFileName))
return;
else {
Configuration cfg = new Configuration();
if (null == configFileName)
cfg.configure();
else
cfg.configure(configFileName);
setSessionFactory(configFileName, cfg.buildSessionFactory());
}
}
/**
* Set the session factory
*/
protected static void setSessionFactory(SessionFactory sessionFactory) {
setSessionFactory((String) null, sessionFactory);
}
/**
* Set the session factory
*/
protected static void setSessionFactory(String configFileName,
SessionFactory sessionFactory) {
sessionFactoryMap.put(configFileName, sessionFactory);
}
/**
* Return the SessionFactory that is to be used by these DAOs. Change this
* and implement your own strategy if you, for example, want to pull the
* SessionFactory from the JNDI tree.
*/
protected SessionFactory getSessionFactory() throws HibernateException {
return getSessionFactory(getConfigurationFileName());
}
private static SessionFactory getSessionFactory(String configFile)
throws HibernateException {
if (sessionFactoryMap.size() == 1)
return (SessionFactory) sessionFactoryMap.values().toArray()[0];
else {
SessionFactory sessionFactory = (SessionFactory) sessionFactoryMap
.get(configFile);
if (null == sessionFactory)
if (null == configFile)
throw new RuntimeException(
"The session factory has not been initialized.");
else
throw new RuntimeException("The session factory for '"
+ configFile + "' has not been initialized.");
else
return sessionFactory;
}
}
/**
* Return a new Session object that must be closed when the work has been
* completed.
*
* @return the active Session
*/
protected Session getSession() throws HibernateException {
return createSession();
}
/**
* Return a new Session object that must be closed when the work has been
* completed.
*
* @return the active Session
*/
public static Session createSession() throws HibernateException {
return createSession(null);
}
/**
* Return a new Session object that must be closed when the work has been
* completed.
*
* @param configFile
* the config file must match the meta attribute "config-file" in
* the hibernate mapping file
* @return the active Session
*/
public static Session createSession(String configFile)
throws HibernateException {
java.util.Stack sessionStack = (java.util.Stack) threadedSessions.get();
Session session = null;
if (null == sessionStack) {
sessionStack = new java.util.Stack();
threadedSessions.set(sessionStack);
}
if (sessionStack.size() > 0) {
Object[] arr = (Object[]) sessionStack.peek();
String cf = (String) arr[0];
if (null == cf) {
session = (Session) arr[1];
} else if (null != cf && null != configFile) {
if (cf.equals(configFile))
session = (Session) arr[1];
}
if (null == session) {
session = getSessionFactory(configFile).openSession();
arr = new Object[2];
arr[0] = configFile;
arr[1] = session;
sessionStack.push(arr);
}
} else {
session = getSessionFactory(configFile).openSession();
Object[] arr = new Object[2];
arr = new Object[2];
arr[0] = configFile;
arr[1] = session;
sessionStack.push(arr);
}
return session;
}
/**
* Return the name of the configuration file to be used with this DAO or
* null if default
*/
public String getConfigurationFileName() {
return null;
}
/**
* Return the specific Object class that will be used for class-specific
* implementation of this DAO.
*
* @return the reference Class
*/
protected abstract Class getReferenceClass();
/**
* Close the session
*/
public void closeSession() throws HibernateException {
java.util.Stack sessionStack = (java.util.Stack) threadedSessions.get();
if (null != sessionStack) {
Object[] arr = (Object[]) sessionStack.peek();
String cf = (String) arr[0];
if (null == cf) {
Session session = (Session) arr[1];
session.close();
sessionStack.pop();
} else {
String configurationFile = getConfigurationFileName();
if (null != configurationFile && configurationFile.equals(cf)) {
Session session = (Session) arr[1];
session.close();
sessionStack.pop();
}
}
}
}
/**
* Begin the transaction related to the session
*/
public Transaction beginTransaction(Session s) throws HibernateException {
return s.beginTransaction();
}
/**
* Commit the given transaction
*/
public void commitTransaction(Transaction t) throws HibernateException {
t.commit();
}
/**
* Execute a query.
*
* @param query
* a query expressed in Hibernate's query language
* @return a distinct list of instances (or arrays of instances)
*/
public java.util.List find(String query) throws HibernateException {
Session s = null;
try {
s = getSession();
return find(query, s);
} finally {
closeSession();
}
}
/**
* Perform a find but use the session given instead of creating a new one.
*
* @param query
* a query expressed in Hibernate's query language
* @s the Session to use
*/
public java.util.List find(String query, Session s)
throws HibernateException {
return s.find(query);
}
/**
* Return all objects related to the implementation of this DAO with no
* filter.
*/
public java.util.List findAll() throws HibernateException {
Session s = null;
try {
s = getSession();
return findAll(s);
} finally {
closeSession();
}
}
/**
* Return all objects related to the implementation of this DAO with no
* filter. Use the session given.
*
* @param s
* the Session
*/
public java.util.List findAll(Session s) throws HibernateException {
return findAll(s, getDefaultOrderProperty());
}
/**
* Return all objects related to the implementation of this DAO with no
* filter.
*/
public java.util.List findAll(String orderProperty)
throws HibernateException {
Session s = null;
try {
s = getSession();
return findAll(s, orderProperty);
} finally {
closeSession();
}
}
/**
* Return all objects related to the implementation of this DAO with no
* filter. Use the session given.
*
* @param s
* the Session
*/
public java.util.List findAll(Session s, String orderProperty)
throws HibernateException {
Criteria crit = createCriteria(s);
if (null != orderProperty)
crit.addOrder(Order.asc(orderProperty));
return crit.list();
}
/**
* Return all objects related to the implementation of this DAO with a
* filter. Use the session given.
*
* @param propName
* the name of the property to use for filtering
* @param filter
* the value of the filter
*/
protected java.util.List findFiltered(String propName, Object filter)
throws HibernateException {
return findFiltered(propName, filter, getDefaultOrderProperty());
}
/**
* Return all objects related to the implementation of this DAO with a
* filter. Use the session given.
*
* @param propName
* the name of the property to use for filtering
* @param filter
* the value of the filter
* @param orderProperty
* the name of the property used for ordering
*/
protected java.util.List findFiltered(String propName, Object filter,
String orderProperty) throws HibernateException {
Session s = null;
try {
s = getSession();
return findFiltered(s, propName, filter, getDefaultOrderProperty());
} finally {
closeSession();
}
}
/**
* Return all objects related to the implementation of this DAO with a
* filter. Use the session given.
*
* @param s
* the Session
* @param propName
* the name of the property to use for filtering
* @param filter
* the value of the filter
* @param orderProperty
* the name of the property used for ordering
*/
protected java.util.List findFiltered(Session s, String propName,
Object filter, String orderProperty) throws HibernateException {
Criteria crit = createCriteria(s);
crit.add(Expression.eq(propName, filter));
if (null != orderProperty)
crit.addOrder(Order.asc(orderProperty));
return crit.list();
}
/**
* Obtain an instance of Query for a named query string defined in the
* mapping file.
*
* @param name
* the name of a query defined externally
* @return Query
*/
public java.util.List getNamedQuery(String name) throws HibernateException {
Session s = null;
try {
s = getSession();
return getNamedQuery(name, s);
} finally {
closeSession();
}
}
/**
* Obtain an instance of Query for a named query string defined in the
* mapping file. Use the session given.
*
* @param name
* the name of a query defined externally
* @param s
* the Session
* @return Query
*/
public java.util.List getNamedQuery(String name, Session s)
throws HibernateException {
Query q = s.getNamedQuery(name);
return q.list();
}
/**
* Obtain an instance of Query for a named query string defined in the
* mapping file. Use the parameters given.
*
* @param name
* the name of a query defined externally
* @param params
* the parameter array
* @return Query
*/
public java.util.List getNamedQuery(String name, Serializable[] params)
throws HibernateException {
Session s = null;
try {
s = getSession();
return getNamedQuery(name, params, s);
} finally {
closeSession();
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?