spring 和 hibernate 来连接数据库
spring配置文件:<?xmlversion="1.0"encoding="UTF-8"?><beansxmlns="http://www.springframewor...
spring 配置文件:
<?xml version="1.0" encoding="UTF-8"?>
<beans
xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:p="http://www.springframework.org/schema/p"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">
<bean id="dataSource"
class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName"
value="com.microsoft.sqlserver.jdbc.SQLServerDriver">
</property>
<property name="url"
value="jdbc:sqlserver://localhost:1433;databaseName=books">
</property>
<property name="username" value="sa"></property>
<property name="password" value="123456"></property>
</bean>
<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="dataSource">
<ref bean="dataSource" />
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">
org.hibernate.dialect.SQLServerDialect
</prop>
</props>
</property>
<property name="mappingResources">
<list>
<value>entity/BookOrder.hbm.xml</value></list>
</property></bean>
<bean id="BookOrderDAO" class="dao.BookOrderDAO">
<property name="sessionFactory">
<ref bean="sessionFactory" />
</property>
</bean></beans>
dao类如下:
public class BookOrderDAO extends HibernateDaoSupport {
private static final Log log = LogFactory.getLog(BookOrderDAO.class);
// property constants
public static final String USERNAME = "username";
public static final String ZIPCODE = "zipcode";
public static final String PHONE = "phone";
public static final String CREDITCARD = "creditcard";
public static final String TOTAL = "total";
protected void initDao() {
// do nothing
}
public void save(BookOrder transientInstance) {
log.debug("saving BookOrder instance");
try {
getHibernateTemplate().save(transientInstance);
log.debug("save successful");
} catch (RuntimeException re) {
log.error("save failed", re);
throw re;
}
}
......
//省略了许多方法.
}
在web工程里没有创建hibernate配置文件,只是创建了spring配置文件而已.
再创建了main方法:
public static void main(String[] args) {
// TODO Auto-generated method stub
BookOrderDAO bookorderdao=new BookOrderDAO();
BookOrder bookorder=new BookOrder();
bookorder=bookorderdao.findById(11);
System.out.println(bookorder.getUsername());
}
其中BookOrder类是实体类.运行后,出错了:
log4j:WARN No appenders could be found for logger (dao.BookOrderDAO).
log4j:WARN Please initialize the log4j system properly.
Exception in thread "main" java.lang.NullPointerException
at dao.BookOrderDAO.findById(BookOrderDAO.java:62)
at test.test.main(test.java:15)
我是用myEclipse7.5直接创建的,怎么出错了?错在哪儿? 展开
<?xml version="1.0" encoding="UTF-8"?>
<beans
xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:p="http://www.springframework.org/schema/p"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">
<bean id="dataSource"
class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName"
value="com.microsoft.sqlserver.jdbc.SQLServerDriver">
</property>
<property name="url"
value="jdbc:sqlserver://localhost:1433;databaseName=books">
</property>
<property name="username" value="sa"></property>
<property name="password" value="123456"></property>
</bean>
<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="dataSource">
<ref bean="dataSource" />
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">
org.hibernate.dialect.SQLServerDialect
</prop>
</props>
</property>
<property name="mappingResources">
<list>
<value>entity/BookOrder.hbm.xml</value></list>
</property></bean>
<bean id="BookOrderDAO" class="dao.BookOrderDAO">
<property name="sessionFactory">
<ref bean="sessionFactory" />
</property>
</bean></beans>
dao类如下:
public class BookOrderDAO extends HibernateDaoSupport {
private static final Log log = LogFactory.getLog(BookOrderDAO.class);
// property constants
public static final String USERNAME = "username";
public static final String ZIPCODE = "zipcode";
public static final String PHONE = "phone";
public static final String CREDITCARD = "creditcard";
public static final String TOTAL = "total";
protected void initDao() {
// do nothing
}
public void save(BookOrder transientInstance) {
log.debug("saving BookOrder instance");
try {
getHibernateTemplate().save(transientInstance);
log.debug("save successful");
} catch (RuntimeException re) {
log.error("save failed", re);
throw re;
}
}
......
//省略了许多方法.
}
在web工程里没有创建hibernate配置文件,只是创建了spring配置文件而已.
再创建了main方法:
public static void main(String[] args) {
// TODO Auto-generated method stub
BookOrderDAO bookorderdao=new BookOrderDAO();
BookOrder bookorder=new BookOrder();
bookorder=bookorderdao.findById(11);
System.out.println(bookorder.getUsername());
}
其中BookOrder类是实体类.运行后,出错了:
log4j:WARN No appenders could be found for logger (dao.BookOrderDAO).
log4j:WARN Please initialize the log4j system properly.
Exception in thread "main" java.lang.NullPointerException
at dao.BookOrderDAO.findById(BookOrderDAO.java:62)
at test.test.main(test.java:15)
我是用myEclipse7.5直接创建的,怎么出错了?错在哪儿? 展开
6个回答
展开全部
log4j的问题
没导入那个配置文件
不是提示得很清楚了……
没导入那个配置文件
不是提示得很清楚了……
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
连2个框架的基础都没学好就去学整合,真是悲剧
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
tale12:log4j,这里log4j没干什么问题,如果说有问题的话,就是在web.xml里把它放到最前面就不会有那两个warn信息了。
LHLBT3GOOD:回答正确。
楼主用了spring,但你那样直接new的 spring容器并不知道。实际使用中,用你这种方法来做的比较少,尤其你是web工程,都应该直接通过配置文件IOC了。
LHLBT3GOOD:回答正确。
楼主用了spring,但你那样直接new的 spring容器并不知道。实际使用中,用你这种方法来做的比较少,尤其你是web工程,都应该直接通过配置文件IOC了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
ApplicationContext ctx =
new ClassPathXmlApplicationContext("applicationContext.xml");
BookOrderDAO book = (BookOrderDAO ) ctx.getBean("BookOrderDAO ");
你是new出来的对象,可以实现你的功能,但是请注意这样的话你项目一个字死
整个项目中就只有一个spring容器,要在action执行的时候就要启动,可以通过配置来启动,在web.xml下配置,或者在struts的配置下启动也可以
new ClassPathXmlApplicationContext("applicationContext.xml");
BookOrderDAO book = (BookOrderDAO ) ctx.getBean("BookOrderDAO ");
你是new出来的对象,可以实现你的功能,但是请注意这样的话你项目一个字死
整个项目中就只有一个spring容器,要在action执行的时候就要启动,可以通过配置来启动,在web.xml下配置,或者在struts的配置下启动也可以
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
LHLBT3GOOD在回答是正确的
getHibernateTemplate()方法返回的为NULL
当引用它的时候自然会出现NullPointerException了
导致这样原因是你的spring容器没有启动
采用
ApplicationContext ctx =
new ClassPathXmlApplicationContext("applicationContext.xml");
BookOrderDAO book = (BookOrderDAO ) ctx.getBean("BookOrderDAO ");
就可以了
不过我建议你
把 BookOrderDAO 抽取接口 采用接口来引用对象
更加的规范
getHibernateTemplate()方法返回的为NULL
当引用它的时候自然会出现NullPointerException了
导致这样原因是你的spring容器没有启动
采用
ApplicationContext ctx =
new ClassPathXmlApplicationContext("applicationContext.xml");
BookOrderDAO book = (BookOrderDAO ) ctx.getBean("BookOrderDAO ");
就可以了
不过我建议你
把 BookOrderDAO 抽取接口 采用接口来引用对象
更加的规范
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询