context.xml
Code:
<?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:context="http://www.springframework.org/schema/context"
xmlns:tx="http://www.springframework.org/schema/tx" xmlns:p="http://www.springframework.org/schema/p"
xmlns:aop="http://www.springframework.org/schema/aop" xmlns:util="http://www.springframework.org/schema/util"
xsi:schemaLocation="
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd
http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-2.5.xsd">
<!-- LISTS -->
<util:list id="hibernatePojoModelClasses">
<value>com.test.database.model.Vote</value>
<value>com.test.database.model.Picture</value>
<value>com.test.database.model.User</value>
</util:list>
<util:properties id="hibernateProperties">
<prop key="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</prop>
<prop key="hibernate.hbm2ddl.auto">update</prop>
<prop key="show_sql">true</prop>
<prop key="hibernate.c3p0.minPoolSize">5</prop>
<prop key="hibernate.c3p0.maxPoolSize">20</prop>
<prop key="hibernate.c3p0.timeout">600</prop>
<prop key="hibernate.c3p0.max_statement">50</prop>
<prop key="hibernate.format_sql">true</prop>
<prop key="hibernate.generate_statistics">true</prop>
</util:properties>
<!-- DATA SOURCE -->
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"
destroy-method="close" p:driverClassName="com.mysql.jdbc.Driver"
p:url="jdbc:mysql://localhost:3306/test" p:username="test"
p:password="****" p:removeAbandoned="true" p:removeAbandonedTimeout="60"
p:maxActive="100" p:maxIdle="30" p:maxWait="-1" />
<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean"
p:dataSource-ref="dataSource" p:hibernateProperties-ref="hibernateProperties"
p:annotatedClasses-ref="hibernatePojoModelClasses" />
<bean id="transactionManager"
class="org.springframework.orm.hibernate3.HibernateTransactionManager"
p:sessionFactory-ref="sessionFactory" />
<tx:annotation-driven transaction-manager="transactionManager" />
<!-- DAOs -->
<bean id="userDao" class="com.test.database.dao.UserDao">
<constructor-arg ref="sessionFactory" />
</bean>
<bean id="pictureDao" class="com.test.database.dao.PictureDao">
<constructor-arg ref="sessionFactory" />
</bean>
<bean id="voteDao" class="com.test.database.dao.VoteDao">
<constructor-arg ref="sessionFactory" />
</bean>
<!-- SERVICEs -->
<!--
<bean id="pictureService"
class="com.test.database.service.PictureService"
p:pictureDao-ref="pictureDao" />
-->
<bean id="userService" class="com.test.database.service.UserService"
p:userDao-ref="userDao" />
<bean id="voteService" class="com.test.database.service.VoteService"
p:voteDao-ref="voteDao" />
</beans>
interface
Code:
public interface IUserService {
public User register(User user);
public User findUserById(String id);
@Transactional
public User findUserByEmail(String email);
public User login(String email, String password);
}
implement
Code:
public class UserService implements IUserService, UserDaoIoC {
private UserDao dao;
/*
* (non-Javadoc)
*
* @see
* com.test.database.service.IUserService#findUserByEmail(java.lang.
* String)
*/
public User findUserByEmail(String email) {
List<?> users = this.dao.findByNamedQuery("user.findByEmail", "email",
email);
if (users.size() > 0) {
return (User) users.get(0);
} else {
return null;
}
}
/*
* (non-Javadoc)
*
* @see
* com.test.database.service.IUserService#findUserById(java.lang.String)
*/
public User findUserById(String id) {
// TODO Auto-generated method stub
return null;
}
/*
* (non-Javadoc)
*
* @see com.test.database.service.IUserService#login(java.lang.String,
* java.lang.String)
*/
public User login(String email, String password) {
// TODO Auto-generated method stub
return null;
}
/*
* (non-Javadoc)
*
* @see
* com.test.database.service.IUserService#register(com.test.database
* .model.User)
*/
public User register(User user) {
this.dao.save(user);
return user;
}
/*
* (non-Javadoc)
*
* @see
* com.test.ioc.database.dao.UserDaoIoC#setUserDao(com.test.database
* .dao.UserDao)
*/
public void setUserDao(UserDao dao) {
this.dao = dao;
}
}
testing
Code:
public class Main {
/**
*
*/
public Main() {
// TODO Auto-generated constructor stub
}
/**
* @param args
*/
public static void main(String[] args) {
ApplicationContext context = new ClassPathXmlApplicationContext(
"applicationContext.xml");
UserService us = (UserService) context.getBean("userService");
System.out.println(us.findUserByEmail("test@test.com").getMemberSince());
}
}