利用JNDI 在Hibernate 3。0中访问数据库?

Henry_Zhang_boy 2008-03-24 03:54:41
我在我的项目(TestHiber)中编写了一个TestMain.java来测试我在Hibernate中利用JNDI配置的数据库。现描述如下:请大家指出出错原因,谢谢!我用的是MyEclipse 6.0开发工具。JDK 5。0+Tomcat 5.5
文件TestMain.java
public static void main(String[] args) {
Session session=HibernateSessionFactory.getSession();
EmployeeInfo employeeInfo=new EmployeeInfo();
//employeeInfo.setId(1);
employeeInfo.setName("qingdao123456");
employeeInfo.setContact("Qingdao");
employeeInfo.setDepartmentName("abcdefg");
employeeInfo.setSex("男");
employeeInfo.setBirthday(Date.valueOf("1986-12-11"));
Transaction ts=session.beginTransaction();
ts.begin();
session.saveOrUpdate(employeeInfo);
ts.commit();
}
hibernate.cfg.xml 配置如下:
<hibernate-configuration>

<session-factory>
<property name="connection.datasource">
java:comp/env/jdbc/TestHibernate
</property>
<property name="dialect">
org.hibernate.dialect.SQLServerDialect
</property>
<mapping resource="com/ecode/hibernate/EmployeeInfo.hbm.xml" />

</session-factory>

</hibernate-configuration>
EmployeeInfo.java 文件如下:
<hibernate-configuration>

<session-factory>
<!--<property name="hibernate.transaction.factory_class">
net.sf.hibernate.transaction.JDBCTransactionFactory
</property>

--><!--
<property name="c3p0.min_size">5</property>
<property name="c3p0.max_size">20</property>
<property name="c3p0.timeout">1800</property>
<property name="c3p0.max_statements">50</property>
-->
<property name="connection.datasource">
java:comp/env/jdbc/TestHibernate
</property>
<property name="dialect">
org.hibernate.dialect.SQLServerDialect
</property>
<mapping resource="com/ecode/hibernate/EmployeeInfo.hbm.xml" />

</session-factory>

</hibernate-configuration>
EmployeeInfo.hbm.xml 文件如下:
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!--
Mapping file autogenerated by MyEclipse Persistence Tools
-->
<hibernate-mapping>
<class name="com.ecode.hibernate.EmployeeInfo" table="EmployeeInfo" schema="dbo" catalog="EmployeeManagement">
<id name="id" type="java.lang.Integer">
<column name="ID" />
<generator class="identity" />
</id>
<property name="departmentName" type="java.lang.String">
<column name="DepartmentName" length="50" not-null="true" />
</property>
<property name="name" type="java.lang.String">
<column name="Name" length="50" not-null="true" />
</property>
<property name="sex" type="java.lang.String">
<column name="Sex" length="50" not-null="true" />
</property>
<property name="contact" type="java.lang.String">
<column name="Contact" length="50" not-null="true" />
</property>
<property name="birthday" type="java.util.Date">
<column name="Birthday" length="23" />
</property>
</class>
</hibernate-mapping>
我的一个SessionFactory.java 文件(主要用来生session实例的) ,由于篇幅限制这里就不给出了!
运行 TestMain.java出现以下错误提示:
org.hibernate.HibernateException: Could not find datasource
at org.hibernate.connection.DatasourceConnectionProvider.configure(DatasourceConnectionProvider.java:56)
at org.hibernate.connection.ConnectionProviderFactory.newConnectionProvider(ConnectionProviderFactory.java:124)
at org.hibernate.connection.ConnectionProviderFactory.newConnectionProvider(ConnectionProviderFactory.java:56)
at org.hibernate.cfg.SettingsFactory.createConnectionProvider(SettingsFactory.java:366)
at org.hibernate.cfg.SettingsFactory.buildSettings(SettingsFactory.java:60)
at org.hibernate.cfg.Configuration.buildSettings(Configuration.java:1881)
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1174)
at com.ecode.hibernate.HibernateSessionFactory.<clinit>(HibernateSessionFactory.java:31)
at TestMain.main(TestMain.java:22)
Caused by: javax.naming.NoInitialContextException: Need to specify class name in environment or system property, or as an applet parameter, or in an application resource file: java.naming.factory.initial
at javax.naming.spi.NamingManager.getInitialContext(Unknown Source)
at javax.naming.InitialContext.getDefaultInitCtx(Unknown Source)
at javax.naming.InitialContext.getURLOrDefaultInitCtx(Unknown Source)
at javax.naming.InitialContext.lookup(Unknown Source)
at org.hibernate.connection.DatasourceConnectionProvider.configure(DatasourceConnectionProvider.java:52)
... 8 more
%%%% Error Creating SessionFactory %%%%
org.hibernate.MappingException: Could not read mappings from resource: com/ecode/hibernate/EmployeeInfo.hbm.xml
at org.hibernate.cfg.Configuration.addResource(Configuration.java:485)
at org.hibernate.cfg.Configuration.parseMappingElement(Configuration.java:1465)
at org.hibernate.cfg.Configuration.parseSessionFactory(Configuration.java:1433)
at org.hibernate.cfg.Configuration.doConfigure(Configuration.java:1414)
at org.hibernate.cfg.Configuration.doConfigure(Configuration.java:1390)
at org.hibernate.cfg.Configuration.configure(Configuration.java:1310)
at com.ecode.hibernate.HibernateSessionFactory.rebuildSessionFactory(HibernateSessionFactory.java:69)
at com.ecode.hibernate.HibernateSessionFactory.getSession(HibernateSessionFactory.java:53)
at TestMain.main(TestMain.java:22)
Caused by: org.hibernate.DuplicateMappingException: Duplicate class/entity mapping com.ecode.hibernate.EmployeeInfo
at org.hibernate.cfg.Mappings.addClass(Mappings.java:118)
at org.hibernate.cfg.HbmBinder.bindRoot(HbmBinder.java:154)
at org.hibernate.cfg.Configuration.add(Configuration.java:386)
at org.hibernate.cfg.Configuration.addInputStream(Configuration.java:427)
at org.hibernate.cfg.Configuration.addResource(Configuration.java:482)
... 8 more
1986-12-11
Exception in thread "main" java.lang.NullPointerException
at TestMain.main(TestMain.java:30)
...全文
140 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
UltraBejing 2008-05-01
  • 打赏
  • 举报
回复
lz要干嘛?
meiZiNick 2008-04-30
  • 打赏
  • 举报
回复
都是很好的建议! 值得学习

10,613

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 其他
社区管理员
  • 其他
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧