Kil*_*ler 5 java mysql hibernate
在我的应用程序中,我使用hibernate,连接数据库并创建会话.这是我的hibernate.cfg.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>
<!-- Database connection settings -->
<property name="connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="connection.url">jdbc:mysql://localhost:3306/country</property>
<property name="connection.username">root</property>
<property name="connection.password">password</property>
</session-factory>
</hibernate-configuration>
Run Code Online (Sandbox Code Playgroud)
但是当我尝试db.property file使用hibernate.cfg.xml它来读取数据库配置属性时,它显示了Exception,这是我的另一个hibernate.cfg.xml文件
<util:properties id="db" location="classpath:db.properties" />
<hibernate-configuration>
<session-factory>
<!-- Database connection settings -->
<property name="driverClassName" value="#{db['driverClassName']}"></property>
<property name="url" value="#{db['url']}"></property>
<property name="username" value="#{db['username']}"></property>
<property name="password" value="#{db['password']}"></property>
</session-factory>
</hibernate-configuration>
Run Code Online (Sandbox Code Playgroud)
这是错误
org.dom4j.DocumentException: Error on line 8 of document : The prefix "util" for element "util:properties" is not bound. Nested exception: The prefix "util" for element "util:properties" is not bound.
at org.dom4j.io.SAXReader.read(SAXReader.java:482)
at org.hibernate.cfg.Configuration.doConfigure(Configuration.java:2155)
Run Code Online (Sandbox Code Playgroud)
这是我的名为的属性文件 db.properties
driverClassName=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/country
username=root
password=password
Run Code Online (Sandbox Code Playgroud)
有什么问题?如何正确地做到这一点
util:properties不是在hibernate.cfg.xml文件中使用的有效标记.如果要将所有数据库配置详细信息放在属性文件中,则可以将它们放在hibernate.properties文件中并从hibernate.cfg.xml文件中删除它们.这样,DB详细信息将在属性文件中维护.
如果您想维护一个单独的文件而不是使用hibernate.properties文件,那么您可以尝试这样做:
java.util.Properties properties = new Properties();
properties.load(new FileInputStream("db.properties"));
Configuration configuration = new Configuration();
configuration.configure("hibernate.cfg.xml").addProperties(properties);;
ServiceRegistry serviceRegistry = new StandardServiceRegistryBuilder()
.applySettings(configuration.getProperties()).build();
SessionFactory sessionFactory = configuration
.buildSessionFactory(serviceRegistry);
Run Code Online (Sandbox Code Playgroud)
试试这个代码:
hibernate.properties
hibernate.connection.url=jdbc:mysql://localhost:3306/country
hibernate.connection.driver_class=com.mysql.jdbc.Driver
hibernate.connection.username=root
hibernate.connection.password=123
Run Code Online (Sandbox Code Playgroud)
HibernateUtil.java
import java.util.Properties;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.AnnotationConfiguration;
public class HibernateUtil {
private static final SessionFactory sessionFactory = buildSessionFactory();
private static SessionFactory buildSessionFactory() {
try {
Properties dbConnectionProperties = new Properties();
try {
dbConnectionProperties.load(HibernateUtil.class.getClassLoader().getSystemClassLoader().getResourceAsStream("hibernate.properties"));
} catch(Exception e) {
e.printStackTrace();
// Log
}
return new AnnotationConfiguration().mergeProperties(dbConnectionProperties).configure("hibernate.cfg.xml").buildSessionFactory();
} catch (Throwable ex) {
ex.printStackTrace();
// throw new ExceptionInInitializerError(ex);
}
return null;
}
public static SessionFactory getSessionFactory() {
return sessionFactory;
}
}
Run Code Online (Sandbox Code Playgroud)
休眠文件.cfg.xml
<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<!-- Database connection settings -->
<!-- JDBC connection pool (use the built-in) -->
<property name="connection.pool_size">1</property>
<!-- SQL dialect -->
<property name="dialect">org.hibernate.dialect.MySQLDialect</property>
<!-- Enable Hibernate's automatic session context management -->
<property name="current_session_context_class">thread</property>
<!-- Disable the second-level cache -->
<property name="cache.provider_class">org.hibernate.cache.NoCacheProvider</property>
<!-- Echo all executed SQL to stdout -->
<property name="show_sql">false</property>
<property name="hibernate.hbm2ddl.auto">update</property>
<!--<mapping class="net.viralpatel.hibernate.Employee"/>-->
<!--<mapping class="net.viralpatel.hibernate.PersonEntity"/>-->
<mapping class="mobin.FavaEmail.entities.PersonEntity"/>
<mapping class="mobin.FavaEmail.entities.OrgEntity"/>
<mapping class="mobin.FavaEmail.entities.User"/>
</session-factory>
</hibernate-configuration>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
36039 次 |
| 最近记录: |