数据库工具包
Type | Name and description |
---|---|
static void |
closeConnection(java.sql.Connection conn) 释放数据库连接 |
static boolean |
exists(String dataSourceName = null ) 数据源是否存在 |
static java.sql.Connection |
getConnection(String dataSourceName = null ) 通过dataSource获得一个新的JDBC数据库连接(和当前hibernate session所用的不是一个)。 |
static java.sql.Connection |
getConnectionUnproxied(String dataSourceName = null ) |
static java.sql.Connection |
getCurrentConnection(String dataSourceName = null ) 获得当前 hibernate session 的数据库连接,可以统一进行事务操作与回滚。 |
static org.hibernate.Session |
getCurrentSession(String dataSourceName = null ) 获得当前的 Hibernate Session。 |
static groovy.sql.Sql |
getCurrentSql(String dataSourceName = null, Closure callback = null ) 获得一个Groovy Sql数据库连接,和当前hibernate session使用同一个connection,可以统一进行事务操作与回滚。 |
static org.springframework.transaction.TransactionStatus |
getCurrentTransactionStatus() 获得当前事务(即withTransaction的参数status) |
static String |
getDataSourceNameByDomain(String dataClass) 获取domain类所使用的DataSourceName.如果不是系统默认的DataSource,会以"_"开头。 |
static List<String> |
getDataSourceNames() 获得所有数据源名称列表 |
static String |
getDatabaseName(String dataSourceName = null ) 获得数据库名称。 |
static org.hibernate.SessionFactory |
getSessionFactory(String dataSourceName = null ) 获得 Hibernate SessionFactory |
static groovy.sql.Sql |
getSql(String dataSourceName = null, Closure callback = null ) 通过dataSource获得一个Groovy Sql数据库连接。 |
static groovy.sql.Sql |
getSql(Map args) 获得一个原始的Groovy Sql数据库连接。 |
static groovy.sql.Sql |
getSqlCurrent(String dataSourceName = null ) |
static groovy.sql.Sql |
getSqlUnproxied(String dataSourceName = null ) |
static String |
hqlToSql(String hql, org.hibernate.SessionFactory sessionFactory) 将hql转换成sql |
static String |
hqlToSql(String hql, String dataSourceName = null ) 将hql转换成sql |
static boolean |
isDefaultDataSource(String dataClass) 判断domain类是否所使用的是系统默认的DataSource |
static boolean |
isDm(String dataSourceName = null ) 是否是达梦数据库 |
static boolean |
isMysql(String dataSourceName = null ) 是否是Mysql数据库 |
static boolean |
isOracle(String dataSourceName = null ) 是否是oracle数据库 |
static boolean |
isSqlserver(String dataSourceName = null ) 是否是sqlserver数据库 |
static boolean |
supportsSequences(String dataSourceName = null ) 数据库是否是用sequence来做ID生成器,比如oracle |
static boolean |
supportsSequences(List<String> dataSourceNames) |
Methods inherited from class | Name |
---|---|
class Object |
Object#wait(long), Object#wait(long, int), Object#wait(), Object#equals(Object), Object#toString(), Object#hashCode(), Object#getClass(), Object#notify(), Object#notifyAll() |
释放数据库连接
数据源是否存在
通过dataSource获得一个新的JDBC数据库连接(和当前hibernate session所用的不是一个)。
注意使用完后务必调用 closeConnection 来关闭连接。
获得当前 hibernate session 的数据库连接,可以统一进行事务操作与回滚。
获得当前的 Hibernate Session。如果数据源或session不存在,则返回 null。
获得一个Groovy Sql数据库连接,和当前hibernate session使用同一个connection,可以统一进行事务操作与回滚。
这里返回的 sql 对象,可以设置额外的属性 fetchSize,用于从数据库中读取大量数据,可以提升10倍以上的性能。
如果没有 callback 参数,使用完成后注意close释放资源,避免内存泄漏(数据库连接会自动释放,但是Sql对象及其metaClass等资源却不会释放)。
获得当前事务(即withTransaction的参数status)
注:只能在 Service 类中调用。
获取domain类所使用的DataSourceName.如果不是系统默认的DataSource,会以"_"开头。
获得所有数据源名称列表
获得数据库名称。
通过jdbc URL计算,如 “jdbc:oracle:....”,则返回oracle。
dataSourceName
- 数据源名称,如“auditlog”表示数据源“dataSource_auditlog”;或者JDBC连接的URL(以jdbc:开头)获得 Hibernate SessionFactory
通过dataSource获得一个Groovy Sql数据库连接。
这里返回的 sql 对象,可以设置额外的属性 fetchSize,用于从数据库中读取大量数据,可以提升10倍以上的性能。
注意使用完后需要 close。
dataSourceName
- 数据源名称callback
- 获得 sql 对象后运行的闭包,包含参数 sql,执行完成后会自动关闭连接获得一个原始的Groovy Sql数据库连接。注意使用完后需要 close。
注:升级到2.3后,由于 GRAILS-10850 导致无法使用, 可以配置一个 transactional = false 的数据源,然后调用 getSql 方法。
args
- 包含数据库连接信息的Map。它的key包括:driverClassName the fully qualified class name of the driver class driver a synonym for driverClassName url a database url of the form: jdbc:subprotocol:subname user the database user on whose behalf the connection is being made password the user's password properties a list of arbitrary string tag/value pairs as connection arguments; normally at least a "user" and "password" property should be included other any of the public setter methods of this class may be used with property notation e.g. cacheStatements: true, resultSetConcurrency: ResultSet.CONCUR_READ_ONLY
将hql转换成sql
将hql转换成sql
判断domain类是否所使用的是系统默认的DataSource
是否是达梦数据库
是否是Mysql数据库
是否是oracle数据库
是否是sqlserver数据库
数据库是否是用sequence来做ID生成器,比如oracle
dataSourceName
- 数据源名称,或者数据库名称(oracle、dm...)