- ORM(Object Relational Mapping)은 Java의 Object를 데이터베이스의 테이블로 전환시켜 매핑한다.
- 위의 그림과 같이 class의 자료형과 일치하는 테이블의 데이터로 매핑된다. 예를 들어 String -> varchar, double -> decimal이 있다.
Mybatis
- Mybatis는 JDBC를 통해 얕은 ORM을 제공한다.
@Mapper
public interface UserMapper {
@Insert("INSERT INTO USERS (username, salt, password, firstname, lastname) " +
"VALUES(#{username}, #{salt}, #{password}, #{firstName}, #{lastName})")
@Options(useGeneratedKeys = true, keyProperty = "userId")
int insert(User user);
}
- interface를 통해 사용되며 자동으로 class를 생성해 Spring bean에서 사용할 수 있도록 한다.
- 객체를 인자로 전달만 해줘도 attribute를 자동으로 전달해 준다.
- @Options를 통해 auto-increment key 등을 설정할 수 있다.
User Authentication
- 데이터베이스는 언젠가 탈취당할 위험이 있기 때문에 항상 비밀번호와 같은 개인 정보는 암호화하거나 해시화한다.
- 로그인한 유저만 볼 수 있는 영역을 로그인 하지 않은 유저가 볼 수 없도록 구분해야한다.
- Spring Security를 통해 구현 가능하다.
@Override
protected void configure(HttpSecurity http) throws Exception {
http.authorizeRequests()
.antMatchers("/order", "/css/**", "/js/**").permitAll()
.anyRequest().authenticated();
http.formLogin()
.loginPage("/login")
.permitAll();
http.formLogin()
.defaultSuccessUrl("/tacos", true);
}
- order과 login은 누구나 접근할 수 있다.
- 그 외는 로그인한 유저만 접근 가능하다.
- 로그인 성공시 /tacos로 이동한다.