[회사일] Right 도메인 CRUD 구현 도메인 클래스부터 화면까지
@Entity(name="rights")
public class Right {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private int id;
@Column(length = 100, unique = true)
@NotNull(message = "입력해주세요.")
@Size(min = 1, message = "입력해주세요.")
private String name;
@Column
private String descr;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getDescr() {
return descr;
}
public void setDescr(String descr) {
this.descr = descr;
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Right right = (Right) o;
if (name != null ? !name.equals(right.name) : right.name != null) return false;
return true;
}
@Override
public int hashCode() {
return name != null ? name.hashCode() : 0;
}
}
필드 몇개 추가하고 JPA 애노테이션 추가한 다음 Member 쪽에 Set 타입으로 @ManyToMany 연결.
이때 right는 DB 예약어일 수 있으니 rights라는 이름을 사용하도록 설정 해줌.
IDEA가 코드 생성 메뉴 상숑해서 hashCode랑 equals 구현. 이때 name 필드만 사용.
자 이제 GenericXXX를 이용해서 CRUD 코드 5분 완성.
public interface RightDao extends GenericDao<Right, RightSearchParam> {
}
@Repository
public class RightDaoImpl extends GenericDaoImpl<Right, RightSearchParam> implements RightDao {
protected void applySearchParam(Criteria c, RightSearchParam rightSearchParam) {
CriteriaUtils.addOptionalLike(c, "name", rightSearchParam.getName());
}
}
public interface RightService extends GenericService<Right, RightSearchParam>{
}
@Service
@Transactional
public class RightServiceImpl extends GenericServiceImpl<RightDao, Right, RightSearchParam> implements RightService{
}
@Controller
@RequestMapping("/system/right")
public class RightController extends GenericController<RightService, RightRef, Right, RightSearchParam> {
}
@Component
public class RightRef {
}
public class RightSearchParam {
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
이걸로 서버쪽 코딩 끝. 이제 화면 코드는 태그 파일 활용해서 역시 5분 완성.
<page:editpage label="권한 수정">
<f:input label="권한" path="name" />
<f:textarea label="설명" path="descr" />
</page:editpage>
<page:mgtpage label="권한 관리">
<page:search label="권한 검색">
<s:input label="이름" path="name" />
</page:search>
<script type="text/javascript">
$(function() {
$("#smdis-grid").jqGrid({
colNames:['id', '권한명', '설명'],
colModel :[
{name:'id', index:'id', width:55, hidden:true},
{name:'name', index:'name', width:100},
{name:'descr', index:'descr', width:100}
]
});
});
</script>
</page:mgtpage>
<page:newpage label="새 권한">
<f:input label="이름" path="name"/>
<f:textarea label="설명" path="descr" />
</page:newpage>
<page:viewpage label="계정 정보">
<v:text label="id" value="${model.id}"/>
<v:text label="이름" value="${model.name}"/>
<v:text label="설명" value="${model.descr}"/>
</page:viewpage>
끝..
도메인 코딩 5분, 서버 코딩 5분, 화면 코딩 5분...
초간단 CRUD 구현하는데 15분.