Whiteship's Note

[회사일] Right 도메인 CRUD 구현 도메인 클래스부터 화면까지

프로젝트/SLT : 2010.06.14 16:21


@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분.













저작자 표시
신고
top




: 1 : ··· : 53 : 54 : 55 : 56 : 57 : 58 : 59 : 60 : 61 : ··· : 2638 :





티스토리 툴바