https://gs.saro.me/dev?tn=399
이전 강의에서 이것저것 많이 썼기 때문에, 이번 장에선 조금 쉴 겸 롬복을 다뤄보도록 하겠습니다. 롬복은 스프링에 관련된 것은 아니지만, 자바에서 전반적으로 사용할 수 있습니다. 스프링 또한 getter, setter 가 많이 쓰여, 소스가 어지러운 현상이 있기에 이번 장을 추가하게 되었습니다.
- 롬복은 getter, setter 외에도 많은 기능들이 있습니다.
- 참고 : /wiki?dn=70
이전 강의에 쓰여진 코드 일부
package com.first.jpa;
import java.io.Serializable;
import java.util.Date;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
@Entity
@Table(name="simple_comment")
public class SimpleComment implements Serializable
{
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name="comment_no")
private long comment_no;
@Column(nullable = false)
private String text;
@Column(insertable = false, updatable = false)
@Temporal(TemporalType.TIMESTAMP)
private Date datetime;
public long getComment_no()
{
return comment_no;
}
public String getText()
{
return text;
}
public void setText(String text)
{
this.text = text;
}
public Date getDatetime()
{
return datetime;
}
}
필요없는 getter, setter를 생략했는데도 소스가 get / set 으로 반은 차지하는 느낌이 듭니다.
1. 롬복을 설치해보자!
- 이전 강의에서 작업했던 first 프로젝트를 불러옵니다.
- pom.xml 의 <dependencies></dependencies> 사이에 아래 코드를 추가합니다.
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.16.8</version>
<scope>provided</scope>
</dependency>
- 롬복이 getter / setter 를 만들어주더라도 이클립스가 이를 인식해야 인텔리센스를 만들고 오류도 나지 않기 때문에 아래와 같은 작업을 해주셔야합니다. 방법 1
- 메이븐repository경로/org/projectlombok/lombok/1.16.8/lombok-1.16.8.jar 실행 방법 2
- https://projectlombok.org/mavenrepo/index.html 에서 lombok.jar 를 다운받아 실행. 실행이 안될때... 필자는 7zip을 쓰기 때문에 몰랐지만... 주변사람들 중 특정 압축 프로그램을 사용하고 있으면 jar를 해당프로그램이 선점하고있어서 압축파일이 열리는 경우가 있습니다. 해당 프로그램 옵션에서 제외하거나 java 명령어로 실행시켜주시면 됩니다. 실행 후 IDE(STS / 이클립스)를 찾아서 입력해줍니다. 이 과정이 끝나면 해당 IDE는 린트 / 오토컴파일 / 인텔리센스에서 롬복이 인식되어 사용할 수 있습니다. 기타
- 이 과정에서 프로젝트 최상위에 오류표시가 되어있다면.
- 우클릭 -> Maven -> Update Project 를 해주시면 됩니다.
2. 롬복을 적용해보자!
위 SimpleComment 클래스를 다음과 같이 바꿔줍니다.
package com.first.jpa;
import java.io.Serializable;
import java.util.Date;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
import lombok.Data;
import lombok.Getter;
import lombok.Setter;
@Entity
@Table(name="simple_comment")
@Data
public class SimpleComment implements Serializable
{
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name="comment_no")
@Getter
private long comment_no;
@Column(nullable = false)
@Getter @Setter
private String text;
@Column(insertable = false, updatable = false)
@Temporal(TemporalType.TIMESTAMP)
@Getter
private Date datetime;
}
- 이렇게 해서 훨씬 보기 깔끔해졌습니다.
- 롬복을 사용할 클래스엔 @Data 를 써주고 @Getter @Setter 를 지정해주시면 됩니다.
- 이제 직접 실행하여 제대로 작동하는지 확인해봅시다.
3. 좀 더 응용하면 아래와 같이 쓸 수 있습니다.
롬복을 적용하지 않은 예제 .......
import java.util.Date;
public class TextData
{
public long getNo()
{
return no;
}
public void setNo(long no)
{
this.no = no;
}
public String getSubject()
{
return subject;
}
public void setSubject(String subject)
{
this.subject = subject;
}
public String getText()
{
return text;
}
public void setText(String text)
{
this.text = text;
}
public String getLink()
{
return link;
}
public void setLink(String link)
{
this.link = link;
}
public Date getDate()
{
return date;
}
public void setDate(Date date)
{
this.date = date;
}
private long no;
private String subject;
private String text;
private String link;
private Date date;
}
롬복 적용
import java.util.Date;
import lombok.Data;
import lombok.Getter;
import lombok.Setter;
@Data
@Getter @Setter
public class TextData
{
private long no;
private String subject;
private String text;
private String link;
private Date date;
}
- 까... 깔끔해!!
여기 까지 하셨다면 앞으로의 강의는 리눅스에 톰켓과 MySQL을 설치하고 war 배포를 해보는 강의를 하도록 하겠습니다.