/**
 * ÀÌ ¼Ò½º´Â Spring ÇÁ·¹ÀÓ¿öÅ© ¿öÅ©ºÏ¿¡¼­ »ç¿ëÇÑ ¿¹Á¦ ¼Ò½ºÀÔ´Ï´Ù. 
 * ÀÌ ¼Ò½º´Â ¸ðµç °³¹ßÀÚµéÀÌ ÀÚÀ¯·Ó°Ô ¼öÁ¤ ¹× ¹èÆ÷ÇÒ ¼ö ÀÖ½À´Ï´Ù. 
 * ´Ü, ÀÌ ¼Ò½º¸¦ ±â¹ÝÀ¸·Î »õ·Î¿î ¾ÖÇÃ¸®ÄÉÀÌ¼ÇÀ» °³¹ßÇÒ °æ¿ì ÃâÃ³¸¦ ¸í½ÃÇØ ÁÖ½Ã¸é µË´Ï´Ù. 
 */
package net.javajigi.user.dao;

import java.util.List;

import net.javajigi.user.model.User;

/**
 * »ç¿ëÀÚ °ü¸®¿¡¼­ µ¥ÀÌÅÍº£ÀÌ½º¿ÍÀÇ ÀÛ¾÷À» Àü´ãÇÏ´Â Å¬·¡½º.
 * UserInfo Å×ÀÌºí¿¡ »ç¿ëÀÚ¸¦ Ãß°¡, ¼öÁ¤, »èÁ¦, °Ë»öµîÀÇ ÀÛ¾÷À» ÇÑ´Ù. 
 * 
 * @author ¹ÚÀç¼º(ÀÚ¹ÙÁö±â - javajigi@gmail.com)
 */
public interface UserDAO {
	/**
	 * »ç¿ëÀÚ °ü¸® Å×ÀÌºí¿¡ »õ·Î¿î »ç¿ëÀÚ »ý¼º.
	 */
	public int insert(User user) throws DataAccessException;

	/**
	 * ±âÁ¸ÀÇ »ç¿ëÀÚ »ç¿ëÀÚ Á¤º¸¸¦ ¼öÁ¤.
	 */
	public int update(User user) throws DataAccessException;
	
	/**
	 * »ç¿ëÀÚ ¾ÆÀÌµð¿¡ ÇØ´çÇÏ´Â »ç¿ëÀÚ¸¦ »èÁ¦.
	 */
	public int delete(String userId) throws DataAccessException;
	
	/**
	 * »ç¿ëÀÚ ¾ÆÀÌµð Á¤º¸¸¦ µ¥ÀÌÅÍº£ÀÌ½º¿¡¼­ Ã£¾Æ User µµ¸ÞÀÎ Å¬·¡½º¿¡ 
	 * ÀúÀåÇÏ¿© ¹ÝÈ¯.
	 */
	public User findUser(String userId) throws DataAccessException;
	
	/**
	 * »ç¿ëÀÚ ¸®½ºÆ®¸¦ ¸¸µé±â À§ÇÑ ºÎºÐÀ¸·Î ÇöÀç ÆäÀÌÁö¿Í 
	 * ÆäÀÌÁö´ç Ä«¿îÆ®¼ö¸¦ ÀÌ¿ëÇÏ¿© ÇØ´çºÎºÐÀÇ »ç¿ëÀÚ¸¸À» ListÄÝ·º¼Ç¿¡
	 * ÀúÀåÇÏ¿© ¹ÝÈ¯.
	 */
	public List findUserList() throws DataAccessException;
	
	/**
	 * ÀÎÀÚ·Î Àü´ÞµÇ´Â ¾ÆÀÌµð¸¦ °¡Áö´Â »ç¿ëÀÚ°¡ Á¸ÀçÇÏ´ÂÁöÀÇ 
	 * À¯¹«¸¦ ÆÇº°. 
	 */
	public boolean existedUser(String userId) throws DataAccessException;
	
}
