é£è¼è¨äºãSpringBoot ã¢ããªéçºããèªã¿é²ããã¨ããµã³ãã«ã® Webã¢ããªãå¶ä½ãããã¨ãã§ãã¾ãã
ä»åã¯ãJavaã®ã¢ãã«ã¨ãªãã¸ããªã使ãã¦ããã¾ãã
é£è¼è¨äº
SpringBoot ã¢ããªéçºã®é£è¼è¨äºã¯ä»¥ä¸ã®éãã§ãã
- æ¦è¦ã»ä½¿ç¨ãããã¯ã
- ããã¸ã§ã¯ã使ã»SQL使
- ã¢ãã«ã»ãªãã¸ããªã®ä½æï¼ä»åã®è¨äºï¼
- ã³ã³ããã¼ã©ã¼ã»ã¡ã¤ã³ã®ä½æ
- HTMLã»JavaScriptã®ä½æ
- CSSã»ç»åã®ä½æ
- ãã¹ãã»åä½ç¢ºèª
ç®æ¬¡
- ã¢ãã«ã®ä½æ
- ãªãã¸ããªã®ä½æ
1. ã¢ãã«ã®ä½æ
ã¤ã¶ããã®ãã¼ã¿ãä¿æããã¯ã©ã¹ã使ãã¦ããã¾ãã
1.1. 親ã¯ã©ã¹ã®ä½æ
äºåã«ä»¥ä¸ã®è¦ªã¯ã©ã¹ã使ãã¾ãã
src/main/java/sample/model/TimestampEntity.java
package sample.model; import java.sql.Timestamp; import java.time.Instant; import jakarta.persistence.Column; import jakarta.persistence.MappedSuperclass; import jakarta.persistence.PrePersist; import jakarta.persistence.PreUpdate; @MappedSuperclass public abstract class TimestampEntity { public Timestamp updateTime; @Column(updatable = false) public Timestamp createTime; // INSERTã®æã«ä½ææ¥æã¨æ´æ°æ¥æãè¨å® @PrePersist public void prePersist() { Timestamp ts = Timestamp.from(Instant.now()); this.createTime = ts; this.updateTime = ts; } // UPDATEã®æã«æ´æ°æ¥æãè¨å® @PreUpdate public void preUpdate() { this.updateTime = Timestamp.from(Instant.now()); } }
JPAã§ã¿ã¤ã ã¹ã¿ã³ããç¾å¨æ¥æã«è¨å®ããããã«ç¨æãã¦ãã¾ãã
1.2. ã¢ãã«ã®ä½æ
親ã¯ã©ã¹ãç¶æ¿ããã¢ãã«ã使ãã¾ãã
src/main/java/sample/model/Tweet.java
package sample.model; import jakarta.persistence.Column; import jakarta.persistence.Entity; import jakarta.persistence.GeneratedValue; import jakarta.persistence.GenerationType; import jakarta.persistence.Id; import jakarta.persistence.Version; @Entity public class Tweet extends TimestampEntity { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) public long id; @Column(nullable = false) public String txt; @Version @Column(nullable = false) public long version; }
2. ãªãã¸ããªã®ä½æ
Spring ã® CrudRepository ãç¶æ¿ããã¤ã³ã¿ã¼ãã§ã¤ã¹ã使ãã¾ãã
src/main/java/sample/repository/TweetRepository.java
package sample.repository; import org.springframework.data.repository.CrudRepository; import sample.model.Tweet; public interface TweetRepository extends CrudRepository<Tweet, Long> { Iterable<Tweet> findAllByOrderByCreateTimeDesc(); }
CRUDé¢é£ã®ã¡ã½ããã¯ç¶æ¿ãããã®ã§ãã¤ã¶ãããä½ææ¥æã®éé ã§åå¾ããã¡ã½ããã ãå®è£ ãã¦ãã¾ãã
GitHubãªãã¸ããª
ã¢ããªã®ã³ã¼ãã¯ã以ä¸ã®ãªãã¸ããªã«ãããã¾ãã