Hacker was drafted out of Duncanville High School by the New York Yankees in 2002. He pitched in their minor league system from 2002 to 2009 (missing 2004 and 2006 with injuries) before getting traded to the Pirates. He made his major league debut with Pittsburgh on September 22, 2009, and pitched in three games for them that season. He signed with the Giants in the offseason and spent the entire 2010 season in the minor leagues. In 2011, he signed with the Twins and appeared in two games with them. He signed with San Francisco in 2012 and made his first career start in the majors, recording a loss. He also pitched three games in relief for the Giants that year.
Hacker was born in Duncanville, Texas; growing up, he attended Duncanville High School. He was named the starting quarterback on the school's football team his senior year, but he broke his foot in the second game of the season. Although some colleges were interested in him as a football player, he decided to concentrate on baseball as a result of the injury. As a senior, he was a third-team Class 5A All-State pitcher. Currently, Hacker lives in Corsicana, Texas, with his wife, Christine, whom he married in November 2008. He is a Dallas Cowboys fan. Two of his hobbies are fishing and pool.
Drafted by the New York Yankees in the 23rd round of the 2002 Major League Baseball draft, Hacker began his career with the GCL Yankees of the rookie-level Gulf Coast League. He appeared in three games with them in 2002. In 2003, he appeared in seven games (five starts) with them, posting a 3–2 record, a 2.86 earned run average (ERA), 26 strikeouts, and seven walks in 28 1⁄3 innings pitched. He also pitched with the Staten Island Yankees of the Class A short-season New York–Penn League, where he had no record and an ERA of 1.00 in two starts. He underwent Tommy John surgery in 2004 and missed the entire season. During his time with the GCL Yankees, he was roommates with Brandon Weeden. The two still correspond.
In 2005, Hacker pitched for the Charleston RiverDogs of the Class A South Atlantic League and was named to the league's All-Star game. On July 2, he threw eight shutout innings in a 1–0 victory over the Rome Braves. However, he was placed on the disabled list the next day and missed the rest of the season with right shoulder inflammation. In 10 starts, Hacker had a 5–2 record, a 1.60 ERA, 40 strikeouts, 14 walks, and one complete game in 62 innings pitched. Hacker missed the entire 2006 season after undergoing right shoulder surgery.
Hacker began 2007 with Charleston, where he had a 9–2 record, a 2.56 ERA, 54 strikeouts, 18 walks, and 95 innings pitched in 17 starts. He also appeared in nine games (seven starts) for the Tampa Yankees of the Class A advanced Florida State League (FSL), posting a 3–3 record, a 6.10 ERA, 22 strikeouts, and 14 walks in 38 1⁄3 innings. He finished the season by appearing in one game (which he won) with the Scranton/Wilkes-Barre Yankees of the Class AAA International League (IL).
Hacker began 2008 with Tampa. He was named the FSL Pitcher of the Week from April 8 to 14 after throwing 14 scoreless innings. After recording a 2–2 record, a 1.87 ERA, 31 strikeouts, nine walks, and 53 innings pitched in nine starts, he was promoted to the Trenton Thunder of the Class AA Eastern League on May 28. In 17 starts with the Thunder, he had a 7–4 record, a 2.76 ERA, 84 strikeouts, and 28 walks in 95 1⁄3 innings pitched. His minor league totals were a 9–6 record, a 2.43 ERA, 79 strikeouts, 33 walks, and 144 1⁄3 innings pitched in 26 starts. In the playoffs, he had a 2–0 record and a 1.54 ERA in two starts as the Thunder won the Eastern League championship.
In 2009, Hacker attended spring training with New York for the first time but was sent to the minors on March 8 after two games. He began the season with Trenton, where he recorded a 1–1 record, a 4.11 ERA, eight strikeouts, seven walks, and 15 1⁄3 innings pitched in three starts. After three starts, he was promoted to Scranton/Wilkes-Barre, where he had an 0–1 record, a 7.88 ERA, 12 strikeouts, four walks, and 16 innings pitched in three starts. On May 9, he was designated for assignment to make room on the 40-man roster for Brett Tomko.
On May 16, Hacker was traded to the Pittsburgh Pirates for Rómulo Sánchez. The Pirates assigned him to the Indianapolis Indians of the International League. He was named the IL Pitcher of the Week for August 3–9 after winning both of his starts and striking out 14 hitters during the week. He recorded a 5–5 record, a 4.02 ERA, 82 strikeouts, 46 walks, and 116 1⁄3 innings pitched in 21 starts and was called up to the majors for the first time on September 8 following the IL season. Hacker said upon being called up:
Hacker made his major league debut on September 22, allowing two runs in an inning in a 10–4 loss to the Cincinnati Reds. He pitched a scoreless inning in a 6–0 loss to the Chicago Cubs in his next game on September 29. In his final game of the year on October 4, he pitched a scoreless inning in a 6–0 loss to Cincinnati. Hacker had no record, a 6.00 ERA, one strikeout, two walks, and three innings pitched in his three games with the Pirates. He was outrighted (sent to the minors and removed from the 40-man roster) on November 6, and he became a minor league free agent on November 9.
On December 18, 2009, Hacker signed with the San Francisco Giants. He pitched in four games for the Giants in spring training but was sent to the minors after posting a 14.29 ERA. With the Fresno Grizzlies of the AAA Pacific Coast League (PCL), he won eight consecutive decisions from July 4 to August 20. In 29 starts, Hacker posted a 16–8 record, a 4.51 ERA, 129 strikeouts, and 62 walks in 165 2⁄3 innings pitched. He tied for the PCL lead in starts with Lance Lynn while finishing sixth in innings pitched, sixth in ERA, and fourth in strikeouts (behind Lynn (141), Brandon Dickson (137), and Michael Kirkman (130)). His 16 wins led the PCL, the highest total since 1995 when Donne Wall won 17. On November 6, he became a free agent.
On November 9, 2010, Hacker signed with the Minnesota Twins. He attended spring training but was sent to the minors after posting a 13.50 ERA in five games. He was called up to Minnesota on April 19 to replace Alex Burnett (who was optioned) in the bullpen; Twins manager Ron Gardenhire said, "We need a long guy [in the bullpen]." He made his Twins' debut that day, throwing two scoreless innings in an 11–0 loss to the Baltimore Orioles. In his next game on April 27, he gave up one unearned run in 3 1⁄3 innings but allowed three inherited runners to score in an 8–2 loss to the Tampa Bay Rays. After the game, Hacker was optioned back to Triple-A Rochester to make room on the roster for Anthony Swarzak. On July 17, he was outrighted off the 40-man roster to make room for Scott Diamond. With the Rochester Red Wings of the International League, Hacker had a 7–14 record, a 6.10 ERA, 98 strikeouts, 50 walks, and 135 2⁄3 innings pitched in 26 games (25 starts). He tied with Diamond for the league lead in losses, ranked sixth in the league in walks, led the league in runs allowed (103), and ranked third in the league in earned runs allowed (92, behind Thad Weber's 95 and Corey Kluber's 93). On October 4, he became a free agent.
In 2012, Hacker re-signed with the Giants. He was called up to make his first career start for the Giants on April 27 due to an earlier doubleheader. He allowed three runs and got the loss (his first career decision) but recorded seven strikeouts in six innings as the San Diego Padres defeated the Giants 5–3. After the game, he was returned to Fresno to make room for Steve Edlefsen on the roster. Hacker was selected to the PCL All-Star Game in 2012. On August 17, he was called up to be used as a long reliever soon after Brad Penny was placed on the disabled list. The next day, he gave up a run in 1 2⁄3 innings (a home run by Carlos Quentin) in an 8–7 victory over San Diego. He gave up a run in one inning (a home run by Will Venable) in a 7–1 loss to San Diego on August 19. He allowed a run in one inning in a 7–3 loss to the Atlanta Braves in his next outing on August 25. After the game, Hacker was optioned to Fresno to make room for Eli Whiteside when the Giants decided to have three catchers on their roster. With the Giants, he had an 0–1 record, a 5.59 ERA, eight strikeouts, two walks, and 9 2⁄3 innings pitched in four games (one start).
In 26 games (25 starts) with Fresno, Hacker had a 12–6 record, a 4.01 ERA, 103 strikeouts, and 43 walks in 150 1⁄3 innings pitched. He tied with Tom Koehler, Ryan Verdugo, and Brad Peacock for fourth in the PCL in wins (behind John Ely's and Sean O'Sullivan's 14 and Barry Enright's 13) and finished fourth in ERA (behind Ely's 3.20, Yusmeiro Petit's 3.46, and Brad Hand's 4.00). He was designated for assignment on September 4 to make room for Emmanuel Burriss on the Giants' roster, and he became a free agent four days later.
On January 15, 2013, Hacker signed with the NC Dinos of the KBO League.
On April 4, he started against the Lotte Giants. He pitched 7 innings, while allowing 3 earned runs, but no run support and poor defence caused him to take the loss. During the rest of April, Hacker had a lot of trouble in dealing with runners on base, because his pitching motion was vulnerable to stolen bases. So, by the end of April, Hacker was forced to make changes his pitching delivery.
On March 10, he faced the Doosan Bears, and delivery was changed. Twelve days later, he got his first win in KBO.
In late 2013, Hacker re-signed for the 2014 season with NC Dinos. He has since resigned twice with the Dinos. On December 27, 2016, Hacker signed a one-year, $1 million contract to remain with the Dinos.
Hacker throws four pitches: a fastball, a slider, a curveball, and a changeup. Early in his minor league career, he only threw the fastball and the slider; former Indians' pitching coach Ray Searage believes the other two pitches have helped him keep hitters "off balance." After his first start (against the Padres in 2012), Padres' manager Bud Black said, "He has a deliberate motion out of the windup."