★ Hibernate 醒目 ★ 急~~~
小弟最近要做个项目,决定用hibernate做持久层,看了一些hibernate例子,试着实现了一下,结果发现有不少问题,望高手指点:
1、用tomcat的数据源,在server.xml中配置的<Resource name="jdbc/myoracle" auth="Container" type="javax.sql.DataSource"/>,单独测试确认配置成功!
2、hibernate.cfg.xml ,没有用到hibernate.properties配置(xml头字符串忽略):
<hibernate-configuration>
<session-factory>
<property name="connection.datasource">java:comp/env/jdbc/myoracle</property>
<property name="show_sql">false</property>
<property name="dialect">net.sf.hibernate.dialect.OracleDialect</property>
<!-- Mapping files -->
<mapping resource="Userlist.hbm.xml"/>
</session-factory>
</hibernate-configuration>
3、Userlist.hbm.xml 忽略
4、测试用的servlet
public class TestHBMServlet extends HttpServlet {
private static Logger log = Logger.getLogger(TestHBMServlet.class);
public void init() throws ServletException {
super.init();
Configuration cfg = null;
SessionFactory sf = null;
Session s = null;
try {
cfg = new Configuration().configure();
}catch (MappingException e1) {
e1.printStackTrace();
log.error("映射错误:" + e1);
return;
}catch (HibernateException e) {
e.printStackTrace();
log.error("映射错误:" + e);
return;
}
try {
sf = cfg.buildSessionFactory();
s = sf.openSession();
}catch (HibernateException e) {
e.printStackTrace();
log.error("Hibernate 错误" + e);
return;
}
try {
log.info("Open Session OK");
long start = System.currentTimeMillis();
for (int i = 0; i < 10; i++) {
Userlist message = new Userlist();
message.setId(String.valueOf(i));
message.setUsername(String.valueOf(i));
message.setPassword(String.valueOf(i));
try {
s.save(message);
s.flush();
}
catch (HibernateException e4) {
e4.printStackTrace();
log.error("Hibernate Insert 错误" + e4);
return;
}
}
long end = System.currentTimeMillis();
log.info(new Long(end - start));
}catch (Exception e) {
e.printStackTrace();
log.error("Hibernate Insert 错误" + e);
return;
}finally {
try {
s.close();
}catch (HibernateException e4) {
e4.printStackTrace();
log.error("Hibernate Close 错误" + e4);
}
}
}
}
5、web.xml配置(多余部分忽略):
<servlet>
<servlet-name>testConnectionPooler</servlet-name>
<servlet-class>test.TestHBMServlet</servlet-class>
<load-on-startup>2</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>testConnectionPooler</servlet-name>
<url-pattern>pool</url-pattern>
</servlet-mapping>
好象是解吸hibernate.cfg.xml有误,调式了一上午了,始终没有找到问题所在,希望高手指点,如果嫌分不够,还可以加!