sql
CREATE TABLE student (
id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(50) NOT NULL,
age INT NOT NULL,
email VARCHAR(50) NOT NULL
);
public class Student {
private int id;
private String name;
private int age;
private String email;
}
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="com.mysql.jdbc.Driver" />
<property name="url" value="jdbc:mysql://localhost:3306/mydb" />
<property name="username" value="username" />
<property name="password" value="password" />
</bean>
<bean id="sessionFactory" class="org.springframework.orm.hibernate5.LocalSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
<property name="packagesToScan" value="com.example.model" />
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</prop>
</props>
</property>
</bean>
public interface StudentDAO {
Student getById(int id);
void save(Student student);
void update(Student student);
void delete(Student student);
}
@Repository
public class StudentDAOImpl implements StudentDAO {
@Autowired
private SessionFactory sessionFactory;
@Override
public Student getById(int id) {
return sessionFactory.getCurrentSession().get(Student.class, id);
}
@Override
public void save(Student student) {
sessionFactory.getCurrentSession().save(student);
}
@Override
public void update(Student student) {
sessionFactory.getCurrentSession().update(student);
}
@Override
public void delete(Student student) {
sessionFactory.getCurrentSession().delete(student);
}
}
<bean id="transactionManager" class="org.springframework.orm.hibernate5.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory" />
</bean>
<tx:annotation-driven transaction-manager="transactionManager" />
@Service
@Transactional
public class StudentService {
@Autowired
private StudentDAO studentDAO;
public Student getById(int id) {
return studentDAO.getById(id);
}
public void save(Student student) {
studentDAO.save(student);
}
public void update(Student student) {
studentDAO.update(student);
}
public void delete(Student student) {
studentDAO.delete(student);
}
}
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = "classpath:applicationContext.xml")
public class StudentServiceTest {
@Autowired
private StudentService studentService;
@Test
public void testCRUD() {
Student student = new Student();
student.setName("John");
student.setAge(20);
student.setEmail("john@example.com");
studentService.save(student);
assertNotNull(student.getId());
Student retrievedStudent = studentService.getById(student.getId());
assertEquals(student.getName(), retrievedStudent.getName());
student.setName("Peter");
studentService.update(student);
studentService.delete(student);
assertNull(studentService.getById(student.getId()));
}
}