͏͋Δ͡ΌΜ
• Spring JDBC (JdbcTemplate)
• mybatis-spring
• Spring Data JPA
Slide 6
Slide 6 text
Կ͕ҧ͏ͷ͔
Slide 7
Slide 7 text
Spring Data JDBC
DBΞΫηεͷ
࣮Λఏڙ͠ͳ͍
Slide 8
Slide 8 text
Spring Data JDBC Ξμϓλʔ
Spring Data
JDBC
Spring JDBC
MyBatis
<>
Repository
࣮ͷΓସ͑
BeanఆٛͰߦ͏
Slide 9
Slide 9 text
;Θͬͱݴ͏ͱɺ
DDDຊͷRepository ύλʔϯΛ
͖ͳ࣮Ͱ؆୯ʹͭ͘ΕΔΞϨ
Slide 10
Slide 10 text
EmployeeRepository.java
public interface EmployeeRepository extends
CrudRepository {
@Query("select * from employee where age > :age")
List findByAgeOlderThan(@Param(“age") int age);
}
͔͍͔ͭͨ
Spring JDBC ࣮ͷ߹
SpringDataJdbcConfig.java
@Configuration
@EnableJdbcRepositories
public class SpringDataJdbcConfig {
@Bean
DataAccessStrategy dataAccessStrategy(JdbcMappingContext context) {
return new DefaultDataAccessStrategy(
new SqlGeneratorSource(context),
context);
}
}
Slide 13
Slide 13 text
Ͷɺ؆୯Ͱ͠ΐ͏ʁ
Slide 14
Slide 14 text
MyBatis ࣮ͷ߹
SpringDataJdbcConfig.java
@Configuration
@EnableJdbcRepositories
public class SpringDataJdbcConfig {
@Bean
DataAccessStrategy dataAccessStrategy(SqlSession sqlSession) {
return new MyBatisDataAccessStrategy(sqlSession);
}
}
Hibernate ࣮ͷ߹
HibernateDataAcccessStrategy.java
public class HibernateDataAcccessStrategy
implements DataAccessStrategy {
private SessionFactory sessionFactory;
public HibernateDataAcccessStrategy(
SessionFactory sessionFactory) { … }
private Session currentSession() { … }
@Override
public void insert(T instance, Class domainType,
Map additionalParameters) {
Session session = currentSession();
session.save(instance);
session.flush();
}
…
Slide 25
Slide 25 text
Ͷɺ̺ʢུʣ
Slide 26
Slide 26 text
͔͍ͨͨͷܗ
Employee.java
@Entity
public class Employee {
@org.springframework.data.annotation.Id
@javax.persistence.Id
@Column(name="employee_number")
@GeneratedValue(strategy=
GenerationType.IDENTITY)
private Long employeeNumber;
Slide 27
Slide 27 text
Spring Data JDBC
·ͩ·ͩൃల్্
Slide 28
Slide 28 text
͜ΜͳIssue͕͋Γ·͢
• Support for ValueObjects/Embbeded
• Pagenation abstraction
• @Column
• etc…