Spring Boot 학습의 통합 JPA CRUD 구현

5173 단어 SpringBoot
1. JPA란?
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




    



	


좋은 웹페이지 즐겨찾기