spring-boot 와 spring-data-JPA 의 간단 한 통합
4301 단어 SpringBoot
org.springframework.boot
spring-boot-starter-data-jpa
사용자 역할 을 예 로 들 면 그 중에서 사용자 테이블,캐릭터 테이블,그리고 중간 테이블,사용자 역할 테이블 이 있 습 니 다.먼저 대응 하 는 실체 클래스 를 만 듭 니 다.
/**
*
*/
@Data
@Entity
public class Account extends DefaultValidate implements Login {
@Id
@GeneratedValue
private Integer id;
/**
*
*/
@NotNull(message = " ")
@Size(min = 2, max = 50)
@Column(name="login_name")
private String loginName;
/**
*
*/
@NotNull(message = " ")
@Size(min = 2, max = 50)
@Column(name="account_name")
private String accountName;
/**
*
*/
@Column(name="login_pwd")
private String loginPwd;
/**
*
*/
@Column(name="account_code")
private String accountCode;
/**
*
*/
@ManyToMany(cascade=CascadeType.REFRESH,fetch=FetchType.LAZY)
@JoinTable(name = "account_role",
joinColumns = { @JoinColumn(name = "account_id") },
inverseJoinColumns = { @JoinColumn(name = "role_id") })
private Set roles = new HashSet();
}
/*
*
* @date 2018 3 22 10:17:11
*/
@Data
@Entity
public class Role extends DefaultValidate {
@Id
@GeneratedValue
private Integer id;
/**
*
*/
@NotNull(message = " ")
@Size(min = 2, max = 50)
@Column(name="role_code")
private String roleCode;
/**
*
*/
@NotNull(message = " ")
@Size(min = 2, max = 50)
@Column(name="role_name")
private String roleName;
}
이렇게 대응 하 는 실체 클래스 를 만 들 수 있 습 니 다.위 에서 사용 하 는 맵 관 계 는 단 방향 다 중 입 니 다.이 어 대응 하 는 reposcory 를 만 듭 니 다.
@Repository
public interface AccountReposity extends JpaRepository {
}
사용 할 때 그 에 대응 하 는 방법 을 호출 하면 된다.이어서 대응 하 는 동적 조 회 를 소개 합 니 다.동적 조 회 는 reposcory 가 Jpa SpecificationExecutor 류 를 계승 해 야 합 니 다.
public Page mySubmission(MySubmitPageDto selectDto) {
LOGGER.info(" 。。。。") ;
PageRequest pageable =new PageRequest(selectDto.getPageNum(), selectDto.getPageSize());
//
Specification specification = new Specification() {
/**
* Predicate:
* root:
* query: root , , ( query )
* cb: CriteriaBuilder , Predicate
*/
@Override
public Predicate toPredicate(Root root, CriteriaQuery> query, CriteriaBuilder cb) {
List predicateList = new ArrayList();
predicateList.add(cb.equal(root.get("flowStarter"), selectDto.getUserCode()));
Predicate[] p =new Predicate[predicateList.size()];
return cb.and(predicateList.toArray(p));
}
};
Page page = flowRepository.findAll(specification, pageable);
LOGGER.info(" 。。。。") ;
return page;
}
복잡 한 동적 조회 가 있 으 면 Spring-JDBC 와 결합 하여 조작 하 는 것 을 추천 합 니 다.동적 인 원생 sql 을 쓰 는 것 이 개발 하기에 편리 합 니 다.
JPA 대상 의 생명주기:
New:순간 대상,id 가 없습니다.Persistence Context 와 연 결 된 대상 이 없습니다.
Managed:관리 대상 을 지속 적 으로 유지 하고 id 값 이 있 으 며 Persistence Context 와 관련 된 대상 을 만 들 었 습 니 다.
Datached:유리 상태 오프라인 대상,id 값 이 있 지만 Persistence Context 와 관련 된 대상 이 없습니다.
Removed:삭 제 된 대상 은 id 값 이 있 고 Persistence Context 와 관련 이 있 지만 데이터베이스 에서 삭제 할 준비 가 되 어 있 습 니 다.
JPA 에서 조회 한 대상 이 지구 상태 일 때 대상 속성 을 바 꾸 는 set 방법 을 호출 할 때 동적 으로 데이터 베 이 스 를 수정 합 니 다.통과 가능
@PersistenceContext private EntityManager entityManger;
manager 의 clear 방법 으로 대상 을 풀 면 됩 니 다.
매개 클래스 속성 과 관련 이 있 으 면 set,get 방법 을 다시 쓸 수 있 습 니 다.예 를 들 어:
public WarehouseStatusEnum getState() {
return WarehouseStatusEnum.getWarehouseStatusEnum(this.state);
}
public void setState(WarehouseStatusEnum state) {
this.state = state.value();
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
【Java・SpringBoot・Thymeleaf】 에러 메세지를 구현(SpringBoot 어플리케이션 실천편 3)로그인하여 사용자 목록을 표시하는 응용 프로그램을 만들고, Spring에서의 개발에 대해 공부하겠습니다 🌟 마지막 데이터 바인딩에 계속 바인딩 실패 시 오류 메시지를 구현합니다. 마지막 기사🌟 src/main/res...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.