我使用 Hibernate 开发 J2EE 应用程序,我希望有2个数据库,第一个是本地的(在客户端计算机中),第二个将在服务器。
实际上,我想配置hibernate,以便在无法访问全局时连接本地数据库。
我的实际配置文件:
<hibernate-configuration >
<session-factory>
<property name= "hibernate.dialect"> org.hibernate.dialect.MySQLDialect</property>
<property name= "hibernate.connection.driver_class"> com.mysql.jdbc.Driver</property>
<property name="hibernate.connection.url">jdbc:mysql://localhost/serverBdd </property>
<property name="hibernate.connection.username">root</property>
<property name="hibernate.hbm2ddl.auto">update</property>
<property name="show_sql">true</property>
<property name="hibernate.connection.password"></property>
<mapping resource="hibernateConfiguration/Usine.hbm.xml"/>
<mapping resource="hibernateConfiguration/Produit.hbm.xml"/>
<mapping resource="hibernateConfiguration/Machine.hbm.xml"/>
<mapping resource="hibernateConfiguration/Operation.hbm.xml"/>
<mapping resource="hibernateConfiguration/Utilisateur.hbm.xml"/>
</session-factory>
</hibernate-configuration>
我怎么能这样做?如果我不能怎么办才能解决我的问题呢?
感谢
答案 0 :(得分:0)
当然,here你可以找到一个同时写入2个数据库的例子,但是如果条件简单,你可以决定使用哪个:
首先,像往常一样创建2个hibernate.cfg.xml
文件,但名称不同
之后,在您的DAO
或您获得休眠的任何地方Session
,只需检查服务器数据库及其是否不可用使用本地配置:
SessionFactory sessionFactory = new Configuration().configure("serverconfig.cfg.xml").buildSessionFactory();
if (sessionFactory == null)
sessionFactory = new Configuration().configure("localconfig.cfg.xml").buildSessionFactory();
此外,如果您使用Hibernate 4或更高版本check this answer