datasource:这个是JDK提供的连接数据库的方法
dataSource是注入过来的dataSource的bean
Connection conn = dataSource.getConnection();
conn.createStatement().execute(sql);
使用连接池不需要xml这个对应文件或者annotation注释,因为不是面向对象的操作
下午没事,就练习了下连接数据库,结果发现了一个问题,哈哈
Can not issue data manipulation statements with executeQuery()
原因是这句:st.executeQuery("insert into student values('"+name+"','"+age+"','"+introduce+"')") ;我是看了书上一个例子,然后开始模仿,发现问题后,发现书上其他程序语句都是用这句,后来看了几个网页,才明白这句应该该成这样子:st.execute("insert into student values('"+name+"','"+age+"','"+introduce+"')") ;最后总结:如果你的SQL 语句是诸如update,insert的更新语句,应该用statement的execute()方法,如果用的是statement的executeQuery()就会出现上诉问题
Hibernate:主要是SessionFactory产生session
session sess = HibernateSessionFactory.getCurrentSession();
以及加入事务的操作
Spring的连接:
spring 调用session也是导入的hibernate的包。
调用session的操作是在DAOImpl中完成的,也就是数据操作层调用数据库连接。
无论使用annotation还是使用xml配置,比如将user注入到userDAO,然后将userDAO注入到userService,对userService进行操作的时候,得到这个bean,对其进行初始化,应该加入这个语句:
ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");
UsersDAO usersDAO = (UsersDAO)ac.getBean("userService");
这样,通过IOC将所有的组件组织在一起,直接调用usersDAO的方法就行了。
从jdbc连接到使用spring整合hibernate,改变的只是配置文件中将dataSource注入到hibernate,咱后将调取connection的操作变成调取session的操作,仅此而已。
这个过程中,model类不改变,dao类不改变。也就是说,调用session的地方是daoimpl中,在这里进行实际数据操作。而不是在service中。