public final class HibernateUtil {
private static SessionFactory sessionFactory = null;
private static String path = Common.decode(Thread.currentThread().getContextClassLoader().getResource("../../config.properties").getPath());
private static String message = null;
public static String getMessage() {
return message;
}
/**
*
* @此方法描述的是:同步创建session工厂
* void
*/
public static synchronized void buildSessionFactory() {
if(sessionFactory == null) {
try {
Properties properties = new Properties();
InputStream fis = new FileInputStream(path);
properties.load(fis);
fis.close();
String dbhost = properties.getProperty("dbhost");
String dbport = properties.getProperty("dbport");
String dbname = properties.getProperty("dbname");
String dbuser = properties.getProperty("dbuser");
String dbpw = properties.getProperty("dbpw");
if(mysql_connect(dbhost, dbport, dbname, dbuser, dbpw)) {
Properties extraProperties = new Properties();
extraProperties.setProperty("hibernate.connection.url", "jdbc:mysql://"+dbhost+":"+dbport+"/"+dbname+"?zeroDateTimeBehavior=convertToNull");
extraProperties.setProperty("hibernate.connection.username", dbuser);
extraProperties.setProperty("hibernate.connection.password", dbpw);
Configuration configuration = new Configuration();
configuration = configuration.configure("hibernate.cfg.xml");
configuration = configuration.addProperties(extraProperties);
sessionFactory = configuration.buildSessionFactory();
extraProperties = null;
configuration = null;
}
properties = null;
} catch (Exception e) {
System.out.println("请检查你的hibernate.cfg.xml 文件是否配置正确");
message = "Create sessionFactory Exception! "+e.getMessage();
}
}
}
/**
*
* @此方法描述的是:测试数据库连接
* @param dbhost 服务器名
* @param dbport 端口
* @param dbname 数据库名
* @param dbuser 用户
* @param dbpw 密码
* @return
* boolean
*/
public static boolean mysql_connect(String dbhost, String dbport, String dbname, String dbuser, String dbpw) {
Connection connection = null;
boolean flag = false;
try {
Class.forName("com.mysql.jdbc.Driver");
connection = DriverManager.getConnection("jdbc:mysql://"+dbhost+":"+dbport+"/"+dbname, dbuser, dbpw);
if(connection != null) {
if(!connection.isClosed()) {
connection.close();
connection = null;
}
return true;
}
} catch (Exception e) {
System.out.println("数据库连接异常, 请检查你的config.properties配置文件是否配置正确");
message = e.getMessage();
}
return flag;
}
/**
*
* @此方法描述的是:返回SessionFactory
* @return
* SessionFactory
*/
public static SessionFactory getSessionFactory() {
if(sessionFactory == null) {
buildSessionFactory();
}
return sessionFactory;
}
/**
*
* @此方法描述的是:返回session
* @return
* Session
*/
public static Session getSession() {
if(sessionFactory == null) {
buildSessionFactory();
}
return sessionFactory.getCurrentSession();
}
/**
*
* @此方法描述的是:从新创建SessionFactory
* void
*/
public static void rebuildSessionFactory() {
if(sessionFactory == null) {
try {
Properties properties = new Properties();
InputStream fis = new FileInputStream(path);
properties.load(fis);
fis.close();
String dbhost = properties.getProperty("dbhost");
String dbport = properties.getProperty("dbport");
String dbname = properties.getProperty("dbname");
String dbuser = properties.getProperty("dbuser");
String dbpw = properties.getProperty("dbpw");
if(mysql_connect(dbhost, dbport, dbname, dbuser, dbpw)) {
Properties extraProperties = new Properties();
extraProperties.setProperty("hibernate.connection.url", "jdbc:mysql://"+dbhost+":"+dbport+"/"+dbname+"?zeroDateTimeBehavior=convertToNull");
extraProperties.setProperty("hibernate.connection.username", dbuser);
extraProperties.setProperty("hibernate.connection.password", dbpw);
Configuration configuration = new Configuration();
configuration = configuration.configure("hibernate.cfg.xml");
configuration = configuration.addProperties(extraProperties);
sessionFactory = configuration.buildSessionFactory();
extraProperties = null;
configuration = null;
}
properties = null;
} catch (Exception e) {
System.out.println("请检查你的hibernate.cfg.xml 文件是否配置正确");
message = "Create sessionFactory Exception! "+e.getMessage();
}
}
}
}
分享到:
相关推荐
从 MT4 (MQL4) 访问 MySQL 数据库,MQL通过调用 接口库 MQLMySQL.mqh. 使用 #include 语句将它加到项目工程里。它包含的指令用于导入 MQLMySQL.dll 动态库的函数,以及调用它们和处理函数。而MQLMySQL调用的是MYS
此外,它还管理数据库连接和游标的共享访问,使得在同一时间内可以创建和使用多个连接。 - **libmysql.dll**:这是本地访问驱动器,负责发送查询到数据库并接收结果。 #### 五、连接管理 - **MySqlConnect**:此...
此外,为了在MT4环境中安全地使用MySQL,应确保遵循最佳实践,例如加密数据库连接信息、限制权限、定期备份数据等。同时,由于MQL4不支持异步操作,因此在进行长时间的数据库操作时,可能会阻塞MT4主循环,影响正常...
1. 打开和关闭数据库连接:建立与MySQL服务器的安全连接,结束后释放资源。 2. 执行DML/DDL查询:用于更新数据库中的数据或创建/删除数据库对象。 3. 数据检索:通过游标获取查询结果,游标允许逐行处理数据,而无需...
接下来,配置Spring Boot的数据库连接。在`application.properties`或`application.yml`文件中添加如下配置: ```properties # application.properties 示例 spring.datasource.url=jdbc:mysql://localhost:3306/mr...
从 MT4 (MQL4) 访问 MySQL 数据库(支持中文读取写入)带范例源码,MQL通过调用 接口库 MQLMySQL.mqh. 使用 #include 语句将它加到项目工程里。它包含的指令用于导入 MQLMySQL.dll 动态库的函数,以及调用它们和处理...
Android MQL 关系型 数据库相关项目,由于原链接:http://download.csdn.net/source/3344919 是在公司上传的,已经被加密,所以旧链接已经失效,请下载此链接下相应项目(经已解密),有疑问,请联系:qq:343827585。...
sqlitehelper 动态库使用说明://创建sqlite数据库 int CreateSqliteDataBase(string DataBaseDir);//DataBaseDir 数据库路径 //创建表 int CreateSqliteTable(string DataBaseDir,string TableStr)//TableStr 创建...
在压缩包中的源代码,很可能是实现了以上步骤的一个完整示例,可能包括了CAA的初始化、CAA对象的创建、数据库连接的建立、SQL语句的执行以及数据的读写等关键部分。开发者可以通过阅读和学习这些代码,快速理解如何...
1. **连接管理**:用户可以创建、编辑和管理多个数据库连接,方便在不同数据库间切换。 2. **数据查看与编辑**:提供表格、网格和文本视图,用户可以直接在界面中查看和编辑数据。 3. **SQL编写与执行**:内置的SQL...
### mql连接时出现的中文问题 在使用MySQL进行数据操作的过程中,中文字符的正确显示与存储是一个常见的问题。本文将详细阐述四个关键步骤来确保MySQL数据库中的中文字符能够正常显示,避免出现乱码现象。 #### 1....
7. **错误处理和日志记录**:在集成过程中,可能会遇到各种问题,如连接失败、数据不匹配等。因此,良好的错误处理和日志记录机制至关重要,它们能帮助开发者快速定位并解决问题。 8. **性能优化**:大规模数据集成...
4. 计算字段:可以使用`CONCAT()`函数连接字段,进行算术运算,或者使用内置函数处理数据,例如`SELECT prod_name, prod_price, prod_num, prod_price*prod_num AS prod_money FROM products`。 5. 数据处理函数:...
此外,MQL4语言还能自定义客户指标、脚本和数据库。MetaEditor 4是一个编辑器,集合了编写MQL4程序代码的各种语句,可以帮助使用者方便地写出规范的代码。MetaQuotes Language Dictionary是一个帮助工具,包含了所有...
根据提供的文档内容,本文将详细解析TCL与MQL的相关知识点,包括MQL的基本语法、常用命令以及TCL的基本语法等内容。 ### MQL 常用命令 MQL(Matrix Query Language)是Enovia PLM系统中的一种类似于SQL的语言,...
- **智能交易(Expert Advisors, EAs)**: 连接到MT4图表的自动交易系统,可以独立根据预设条件进行交易操作。它们只能一次执行一个交易指令,直到当前指令执行完成。 - **自定义指标**: 用户可以创建新的技术指标,...
MQL的主要目标是让用户能够理解其命令语法,创建并执行MQL脚本,以及利用MQL进行一系列Matrix操作,包括提取一般和特定对象信息、构建和修改模式、连接对象、推动对象生命周期进程,以及触发隐式和显式事务。...
【MySQL 连接 Cayley 图数据库】 Cayley 是一个开源的图数据库系统,它支持多种后端存储,包括 MySQL。图数据库是一种非关系型数据库,适用于处理复杂的数据关系,如社交网络、推荐系统等。MySQL 作为成熟的 SQL ...
在性能方面,MySQL通过索引和优化SQL查询可以达到很高的读写速度,但处理复杂的关联查询可能需要多次表连接,性能会受到影响。Neo4j由于其数据模型的特性,对于图形遍历和关系查询速度极快,但在处理大量重复数据或...