没有你想的那么疯狂。是的,很难从 SO 那里得到答案,因为这里所有的休眠人员都使用 spring 或 maven 或一些非常花哨的工具来简化休眠配置。
这就是我所做的。
将所有库复制到类路径。在我的 src 文件夹中创建了一个 hibernate.properties 和 hibernate.xml 文件。
属性文件有
hibernate.connection.driver_class=com.mysql.jdbc.Driver
hsqldb.write_delay_millis=0
shutdown=true
hibernate.connection.pool_size=2
hibernate.dialect=org.hibernate.dialect.MySQLInnoDBDialect
在您的 java main 中,您可以以编程方式指定 mysql 服务器、用户名和密码(请注意,您花了我 2 天时间才让这该死的东西正常工作,几乎没有得到 SO 的帮助)。
synchronized (this) {
if (sessionFactory == null) {
try {
String connection = "jdbc:mysql://"
+ Globals.DBSERVER.trim()
+ "/mCruiseOnServerDB?autoReconnect=true&failOverReadOnly=false&maxReconnects=10";
log.debug("Connection URL "+connection) ;
Configuration configuration = new Configuration();
configuration
.setProperty("hibernate.connection.username", Globals.DB_USER_NAME.trim())
.setProperty("hibernate.connection.password", Globals.DB_PASSWORD.trim());
configuration.configure();
sessionFactory = configuration
.buildSessionFactory(new ServiceRegistryBuilder()
.applySettings(configuration.getProperties())
.buildServiceRegistry());
} catch (Exception e) {
log.fatal("Unable to create SessionFactory for Hibernate");
log.fatal(e.getMessage());
log.fatal(e);
e.printStackTrace();
}
}
if (sessionFactory == null) {
log.fatal("Hibernate not configured.");
System.exit(0);
}
XML文件有
<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<!-- other mappings -->
<mapping resource="com/mcruiseon/server/hibernate/UserDetails.hbm.xml" />
</session-factory>
</hibernate-configuration>
确保这些 hbm.xml 文件位于文件夹(在 src 内部)com.mcruiseon.server.hibernate(在某些情况下还包括 /carpool)。
同一个文件夹还应该有对应于 hbm 文件的 POJO。我建议你保持你的数据库列名与你的变量名完全相同,这让生活变得非常简单(与一些愚蠢的人可能建议的相反)。不要使用类似的名称t_age
而不是使用age
(没有首字母缩写词)。
hbm 文件示例
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<!-- Generated 9 Jun, 2010 11:14:41 PM by Hibernate Tools 3.3.0.GA -->
<hibernate-mapping>
<class name="com.mcruiseon.common.concrete.UserDetailsConcrete"
table="userDetails">
<id name="identityHash" type="java.lang.String">
<column name="identityHash" />
<generator class="assigned" />
</id>
<property name="fullName" type="java.lang.String">
<column name="fullName" />
</property>
<!-- other property -->
</class>
</hibernate-mapping>
在 com/mcruiseon/common/concrete 文件夹中创建一个 UserDetailsConcrete
确保所有变量都是私有的(identityHash、fullName...等)。确保您有所有公开的 getter 和 setter。事实上自动生成它(如果你有 Eclipse,对不起)。不要有拼写错误和大写错误。复制粘贴以确保。
你应该让它工作。