Spring Boot 학습의 통합 JPA CRUD 구현
JPA는 전체 Java Persistence API라고 하며 데이터베이스에 데이터를 저장하는 데 사용되는 클래스와 방법의 집합입니다.JPA는 JDK 5.0 메모 또는 XML을 통해 객체 - 관계표의 매핑 관계를 설명하고 런타임의 솔리드 객체를 데이터베이스에 영구화합니다.
2. JPA와 Hibernate의 관계
JPA는 Java 객체의 지속성을 규범화하고 단순화하기 위한 사양입니다.
JPA는 오픈소스 API로 각 기업의 경영자인 Oracle, Redhat, Eclipse 등 다양한 특색 있는 JPA 제품을 제공한다. 그 중에서 Hiberate, Eclipselink, Toplink, Spring Data JPA 등이 있다.Hibernate는 JPA Provider 중 가장 강력한 제품입니다.JPA와 Hibernate 사이의 관계는 JPA가 표준 인터페이스이고 Hibernate가 실현된 것으로 간단하게 이해할 수 있다.
3. JPA와 결합하여 첨삭과 수정을 실현한다.
다음은 도서 관리로 첨삭 개찰, 새 책 대상 실현
@Entity
@Table(name="t_book")
public class Book {
@Id
@GeneratedValue
private Integer bookid;
@Column(length=50)
private String bookname;
@Column(length=30)
private String author;
public Integer getBookid() {
return bookid;
}
public void setBookid(Integer bookid) {
this.bookid = bookid;
}
public String getBookname() {
return bookname;
}
public void setBookname(String bookname) {
this.bookname = bookname;
}
public String getAuthor() {
return author;
}
public void setAuthor(String author) {
this.author = author;
}
}
public interface BookDao extends JpaRepository,JpaSpecificationExecutor{
}
BookController @Controller
@RequestMapping("/book")
public class BookController {
@Resource
private BookDao bookDao;
@RequestMapping("/booklist")
public ModelAndView bookList() {
ModelAndView model = new ModelAndView();
model.addObject("booklist",bookDao.findAll());
model.setViewName("booklist");
return model;
}
/**
*
* @return
*/
@RequestMapping("/listDynamicQuery")
public ModelAndView listDynamicQuery(Book book) {
ModelAndView model = new ModelAndView();
bookDao.findAll(new Specification() {
@Override
public Predicate toPredicate(Root root, CriteriaQuery> query,CriteriaBuilder cb) {
Predicate predicate = cb.conjunction();
if (book!=null) {
if (book.getBookname()!=null&&!"".equals(book.getBookname())) {
predicate.getExpressions().add(cb.like(root.get("bookname"), "%"+book.getBookname()+"%"));
}
if (book.getAuthor()!=null&&!"".equals(book.getAuthor())) {
predicate.getExpressions().add(cb.like(root.get("author"), "%"+book.getAuthor()+"%"));
}
}
return null;
}
});
model.addObject("booklist",bookDao.findAll());
model.setViewName("booklist");
return model;
}
@Transactional
@RequestMapping(value="/addbook",method=RequestMethod.POST)
public String addBook(Book book) {
bookDao.save(book);
return "forward:/book/booklist";
}
@RequestMapping("/preUpdate/{bookid}")
public ModelAndView preUpdate(@PathVariable("bookid") Integer bookid) {
ModelAndView model = new ModelAndView();
model.addObject("book", bookDao.getOne(bookid));
model.setViewName("bookupdate");
return model;
}
@PostMapping(value="/updatebook")
public String updateBook(Book book) {
bookDao.save(book);
return "forward:/book/booklist";
}
@GetMapping("/delbook")
public String delBook(Integer bookid) {
bookDao.delete(bookid);
return "forward:/book/booklist";
}
}
application.yml 프로필server:
port: 80
context-path: /
spring:
datasource:
driverClassName: com.mysql.jdbc.Driver
url: jdbc:mysql://localhost:3306/test
username: root
password: root
jpa:
hibernate:
ddl-auto: update
show-sql: true
booklist.ftl 4
신설
#list>
${book.bookid}
${book.bookname}
${book.author}
수정
삭제
새 책 페이지addbook.html 4
서적 페이지 편집 북랩도트.ftl
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
[MeU] Hashtag 기능 개발➡️ 기존 Tag 테이블에 존재하지 않는 해시태그라면 Tag , tagPostMapping 테이블에 모두 추가 ➡️ 기존에 존재하는 해시태그라면, tagPostMapping 테이블에만 추가 이후에 개발할 태그 기반 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.