Here is a simple example about configuration of Spring3 and Hibernate4.
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="com.mysql.jdbc.Driver" />
<property name="url" value="jdbc:mysql://localhost/mini-liguoliang.com" />
<property name="username" value="root" />
<property name="password" value="password" />
</bean>
<bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
<property name="dataSource" ref="dataSource"></property>
<property name="packagesToScan" value="com.liguoliang.spring.po"></property>
<property name="hibernateProperties">
<props>
<prop key="dialect">org.hibernate.dialect.MySQLDialect</prop>
</props>
</property>
</bean>
<context:component-scan base-package="com.liguoliang.spring"></context:component-scan>
package com.liguoliang.spring.po; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; @Entity @javax.persistence.Table(name="ACCT_USER") public class User { @javax.persistence.Id @GeneratedValue(strategy = GenerationType.AUTO) private int id; private String name; private String login_name; public String getLogin_name() { return login_name; } public void setLogin_name(String login_name) { this.login_name = login_name; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getId() { return id; } public void setId(int id) { this.id = id; } public String toString() { return "User - " + name + " [" + id + "]"; } }
Note the annotation: @Entity
package com.liguoliang.spring; import java.io.File; import java.util.Date; import javax.persistence.Entity; import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.Transaction; import org.hibernate.cfg.Configuration; import org.hibernate.service.ServiceRegistry; import org.hibernate.service.ServiceRegistryBuilder; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.orm.hibernate4.SessionFactoryUtils; import org.springframework.stereotype.Repository; import com.liguoliang.spring.po.User; @Repository public class UserHibernateDAO { private SessionFactory sessionFactory; @Autowired public UserHibernateDAO(SessionFactory sessionFactory) { this.sessionFactory = sessionFactory; } public User getUserByID(int id) { Session session = SessionFactoryUtils.openSession(sessionFactory); return (User) session.get(User.class, id); } }
We need a hibernateBean instance:
package com.liguoliang.spring.web; @Controller @RequestMapping(value="/spring/user") public class ControllerUser { @Autowired private UserHibernateDAO userHibernateDAO; @RequestMapping(value={"", "list"}) public String list(Model model) { // We just print the user info in the console. System.out.println("userName: " + userHibernateDAO.getUserByID(10).toString()); return "userList"; } }
When list() is called, user with the id ’10’ will be loaded by the hibernateDAO, and printed in the console.
http://java.sun.com/blueprints/corej2eepatterns/Patterns/DataAccessObject.html
Figure 9.2 Data Access Object sequence diagram
The BusinessObject represents the data client. It is the object that requires access to the data source to obtain and store data. A BusinessObject may be implemented as a session bean, entity bean, or some other Java object, in addition to a servlet or helper bean that accesses the data source.
The DataAccessObject is the primary object of this pattern. The DataAccessObject abstracts the underlying data access implementation for the BusinessObject to enable transparent access to the data source. The BusinessObject also delegates data load and store operations to the DataAccessObject.
This represents a data source implementation. A data source could be a database such as an RDBMS, OODBMS, XML repository, flat file system, and so forth. A data source can also be another system (legacy/mainframe), service (B2B service or credit card bureau), or some kind of repository (LDAP).
This represents a Transfer Object used as a data carrier. The DataAccessObject may use a Transfer Object to return data to the client. The DataAccessObject may also receive the data from the client in a Transfer Object to update the data in the data source.
Latest Apache Flex News (June 2012) <->
// Proudly powered by Apache, PHP, MySQL, WordPress, Bootstrap, etc,.