<bean id="userService" class="com.example.UserService">
<property name="userRepository" ref="userRepository" />
</bean>
<bean id="userRepository" class="com.example.UserRepositoryImpl">
<property name="sessionFactory" ref="sessionFactory" />
</bean>
<bean id="loggingAspect" class="com.example.LoggingAspect" />
<aop:config>
<aop:aspect ref="loggingAspect">
<aop:pointcut expression="execution(* com.example.*.*(..))" />
<aop:around method="logMethodExecution" />
</aop:aspect>
</aop:config>
<hibernate-configuration>
<session-factory>
<property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
<property name="hibernate.connection.url">jdbc:mysql://localhost:3306/mydatabase</property>
<property name="hibernate.connection.username">root</property>
<property name="hibernate.connection.password">password</property>
...
</session-factory>
</hibernate-configuration>
public class UserService {
private UserRepository userRepository;
public void setUserRepository(UserRepository userRepository) {
this.userRepository = userRepository;
}
public void addUser(User user) {
userRepository.save(user);
}
public List<User> getAllUsers() {
return userRepository.findAll();
}
}
public interface UserRepository {
void save(User user);
List<User> findAll();
}
public class UserRepositoryImpl implements UserRepository {
private SessionFactory sessionFactory;
public void setSessionFactory(SessionFactory sessionFactory) {
this.sessionFactory = sessionFactory;
}
public void save(User user) {
Session session = sessionFactory.getCurrentSession();
session.save(user);
}
public List<User> findAll() {
Session session = sessionFactory.getCurrentSession();
Query query = session.createQuery("FROM User");
return query.list();
}
}